OCR (Optical Character Recognition,光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程。優秀的開源OCR軟件包括:
- Tesseract:原本由惠普開發的圖像識別類庫tesseract-ocr已經更新到2.04, 就是最近Google支持的那個OCR。原先是惠普寫的,現在Open source了。
- OCRopus:Ocropus的(TM)是一個先進的文件分析和OCR系統,采用可插入的布局分析,可插入的字符識別,自然語言統計建模和多語言支持功能。
- Cuneiform:Cuneiform 是一個 OCR 文字識別系統的商標,最開始是由Cognitive 技術所開發的運行在 Windows 下的軟件。而這個項目是該軟件在 Linux 系統下的移植版本。
- GOCR:GOCR 是一個開源的OCR光學識別程序。
- OCRFeeder:OCRFeeder 是 GNOME 桌面下的一個開源 OCR 套件。可將紙質或者圖形文檔轉成電子文檔。
- Lios:linux-intelligent-ocr-solution (Lios) 是Linux下一個開源的 OCR 解決方案,可將打印的文檔轉成可編輯的文本。
雲服務商提供服務:
- 百度OCR: https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html
- Azure圖像識別:https://azure.microsoft.com/zh-cn/services/cognitive-services/computer-vision/
- 阿里雲OCR: https://www.aliyun.com/product/cdi/
- 騰訊OCR:https://cloud.tencent.com/product/ocr
OpenCV VS tesseract:
- opencv:專注機器視覺
- tesseract:專注字符識別
由於tesserocr在windows環境下會出現各種不兼容問題,並且與pycharm虛擬環境不兼容等問題,所以在windows系統環境下,選擇pytesseract模塊進行安裝
Tesseract
Tesserocr 是Python的一個OCR庫,但其實是對tesseract做的一層Python API的封裝,所以他的核心是tesseract。因此,在安裝tesserocr之前,我們需要先安裝tesseract。 實際使用tesseract ocr也有兩種方式:1- 動態庫方式 libtesseract 2 - 執行程序方式 tesseract.exe
安裝過程:
- 在Windows下,首選需要下載tesseract,它為tesserocr提供支持,在“https://digi.bib.uni-mannheim.de/tesseract/” ,然后選擇3.05.02版本進行下載。其中文件名中帶有 dev 的為開發版本,不帶 dev 的為穩定版本,可以選擇下載不帶 dev 的版本,例如可以選擇下載tesseract-ocr-setup-3.05.02-20180621.exe
- 如果不是做英文的圖文識別,還需要下載其他語言的識別包 https://github.com/tesseract-ocr/tessdata 下載
安裝Tesseract
- 下載Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安裝就行。
- 既然是要訓練中文,記得勾選 additional language data,如下圖:
-
找到中文簡體和中文繁體,按需勾選,然后點下一步。可以先不勾選,因為這樣直接下載語言的包實在太慢。可以從網頁上直接下載語言包,然后等程序安裝好后,放入安裝目錄下tessdata目錄下面,如下圖:
配置:
- 在環境變量的系統變量和個人用戶的PATH,把tesseract-ocr的安裝路徑(如 C:\Program Files (x86)\Tesseract-OCR;)添加進去
- 在windows系統你還需要將testdata目錄也加入環境變量,TESSDATA_PREFIX=C:\Program Files (x86)\Tesseract-OCR\tessdata
驗證安裝:
- 打開命令終端,輸入:tesseract -v,可以看到版本信息
落地驗證:
- 直接下載:https://raw.githubusercontent.com/Python3WebSpider/Testtess/master/image.png 然后,將圖片下載下來並保存為image.png,然后使用tesseract命令進行測試
- 命令:tesseract image.png 1 (image.png 代表待識別的源文件,1代表輸出文件名,默認輸出格式是txt文件格式!)
python用tesseract-ocr做圖像識別
需要導入兩個庫,這是別人寫好的封裝好的庫文件。
- 需要用到兩個庫:pytesseract和PIL
- 還需要安裝識別引擎tesseract-ocr
Python-tesseract: 是Tesseract OCR引擎的Python封裝類。能夠讀取任何常規的圖片文件(JPG, GIF ,PNG , TIFF等)並解碼成可讀的語言。在OCR處理期間不會創建任何臨文件
PIL (Python Imaging Library):是 Python 中最常用的圖像處理庫。
python對圖像的處理比較常見的是用 pytesseract 識別驗證碼,要安裝pytesseract庫,必須先安裝其依賴的 PIL 及 tesseract-ocr,其中PIL為圖像處理庫,而后面的tesseract-ocr則為google的ocr識別引擎。
- 命令:pip install pillow 目前PIL的官方最新版本為1.1.7,支持的版本為python 2.5, 2.6, 2.7,並不支持python3,經查詢python3.X用pillow代替,進入DOS命令行窗口,敲入以下代碼
- 命令:pip install pytesseract
示例代碼:
import pytesseract from PIL import Image as img text = pytesseract.image_to_string(img.open('image.png')) print(text)
示例結果:
帶中文圖片示例(示例圖片是從百度圖片上下載的):
中文效果並不理想,下一節介紹訓練過程
相關鏈接:
- tesserocr GitHub: https://github.com/sirfz/tesserocr
- tesserocr PyPI: https://pypi.python.org/pypi/tesserocr
- tesseract 下載地址: https://digi.bib.uni-mannheim.de/tesseract/
- tesseract GitHub : https://github.com/tesseract-ocr/tesseract
- tesseract 語言包 : https://github.com/tesseract-ocr/tessdata
- tesseract 文檔 : https://github.com/tesseract-ocr/tesseract/wiki/Documentation
參考資料: