使用Tesseract对图片文字OCR识别
前言
想用Python對身份證圖片進行OCR識別,提取出身份證上面的文字,但是不想依賴網絡上提供的第三方的接口(比如Face++提供的身份證OCR識別),因為將身份證的照片上傳到這樣的接口進行識別,很可能會泄露用戶的隱私信息等。所以就想用Python在本地進行圖片文字OCR識別。
Tesseract是一款被廣泛使用的開源 OCR 工具,本文將對其進行簡單的介紹,先配置安裝好Tesseract,為后續用Python在本地調用tesseract提供基礎。
目錄
文章目錄
- 前言
- 目錄
- 關于Tesseract
- 筆者的電腦環境
- 獲取,安裝與配置
- tesseract命令的格式
- 測試
- 測試對英文數字混合的四位驗證碼的識別
- 測試對英文文本圖片的識別
- 測試對中文文本圖片的識別
- 測試對身份證圖片的識別
- 測試對模糊的中文文本的圖片的識別
- 后續想法
- Python調用tesseract的兩種方法
- 參考資料
關于Tesseract
所謂 OCR 是圖像識別領域中的一個子領域,該領域專注于對圖片中的文字信息進行識別并轉換成能被常規文本編輯器編輯的文本。
Tesseract是一個流行的OCR(Optical Character Recognition,光學字符識別)庫,通俗來說就是文本識別。Tesseract最初由HP(就是惠普啦)在1985年開始研發,后面貌似就沒啥太重大的進展了;直到2005年HP將Tesseract開源,2006年開始交給Google維護。
Tesseract 已經有 30 年歷史,開始它是惠普實驗室的一款專利軟件,然后在 2005 年開源,自 2006 年后由 Google 贊助進行后續的開發和維護。
在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在現在的免費 OCR 引擎中,其識別精度也仍然是出類拔萃的。因為其免費與較好的效果,許多的個人開發者以及一些較小的團隊在使用著 Tesseract ,諸如驗證碼識別、車牌號識別等應用中,不難見到 Tesseract 的身影。
Tesseract在進入3.0版本后各方面功能都有了長足的發展,尤其是3.02.02版本開始提供C-API,使得通過動態鏈接庫與其他編程語言混合開發成為了可能。
筆者的電腦環境
Windows10教育版 64位 1709 (OS內部版本:16299.371)
獲取,安裝與配置
1、下載tesseract-ocr軟件。點這里進入軟件下載頁面。
選擇4.0.0-alpha for Windows下面的 Windows Installer made with MinGW-w64 from UB Mannheim,點擊UB Mannheim進入另一網頁。
進入的另一網頁的網址為https://github.com/UB-Mannheim/tesseract/wiki。
點擊tesseract-ocr-setup-4.0.0-alpha.20180109.exe,下載4.0版本的軟件.
注:下載鏈接會根據軟件版本更新,下載地址會不斷更新。大家可以到網頁自行查找下載鏈接。
2、下載好的軟件安裝包如圖,雙擊安裝軟件。安裝過程按照下面的圖片指示進行。
注意選擇安裝語言包,包含英文(默認安裝)、中文、數學公式等,可以根據需要自己下載。
3、點擊這里進入下載最新的tessdata(訓練好的數據),下載后解壓到tesseract-OCR的安裝目錄下的tessdata文件夾。
4、配置環境變量。在path環境變量中加入tesseract-OCR的安裝目錄。
5、按下windows + R 輸入 cmd 打開命令行窗口。鍵入tesseract --list-langs可查看到tessdata文件夾下所有訓練好的數據。
7、按下windows + R 輸入 cmd 打開命令行窗口。鍵入D:按回車進入D盤,鍵入cd testOCR按回車進入“testOCR”文件夾,鍵入ls按回車可看到剛剛準備好的用于測試的5張圖片。
tesseract命令的格式
tesseract命令的格式為:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]其中imagename為輸入圖片路徑,outputbase為輸出文本文件路徑,此文本文件內容為圖片文本識別結果。
測試
筆者分別找了幾張帶文字的圖片放到了D盤testOCR文件夾下準備用于測試。
測試對英文數字混合的四位驗證碼的識別
在命令行窗口鍵入tesseract 1.jpg 1.txt按回車,到D盤testOCR文件夾下打開1.txt可看到識別的結果。如下圖。
測試對英文文本圖片的識別
在命令行窗口鍵入tesseract 2.jpg 2.txt按回車,到D盤testOCR文件夾下打開1.txt可看到識別的結果。如下圖。
測試對中文文本圖片的識別
在命令行窗口鍵入tesseract 3.jpg 3.txt -l chi_sim按回車,到D盤testOCR文件夾下打開1.txt可看到識別的結果。如下圖。
測試對身份證圖片的識別
在命令行窗口鍵入tesseract 4.jpg 4.txt -l chi_sim按回車,到D盤testOCR文件夾下打開1.txt可看到識別的結果。如下圖。
測試對模糊的中文文本的圖片的識別
在命令行窗口鍵入tesseract 5.jpg 5.txt -l chi_sim按回車,到D盤testOCR文件夾下打開1.txt可看到識別的結果。如下圖。
后續想法
由上的測試可看出對識別英文準確率要高一些,對中文的識別還有一些錯別字,對身份證的文字識別準確率上還不夠,所以想讓Python先對圖片進行一定處理后,再用python調用Tesseract對圖片文字OCR識別。
Python調用tesseract的兩種方法
1、通過shell與tesseract通信完成識別過程;
2、通過動態鏈接庫(Windows下即DLL)實現。
參考資料
1、Python:文本識別拋棄pytesser,直接使用Tesseract
2、Tesseract:安裝與命令行使用
3、圖片文字OCR識別-tesseract-ocr4.00.00安裝使用
4、tesseract安裝使用
總結
以上是生活随笔為你收集整理的使用Tesseract对图片文字OCR识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼠标点击测试_鼠标键盘如何检测故障,这边
- 下一篇: atom编写python程序_编写我们的