本文參考了https://www.cnblogs.com/syqlp/p/5462459.html,誠摯感謝
試驗目標:用python27實現文字識別OCR功能
環境:win10(64位)
Python2.7.9
實現流程:
1. 安裝pyocr
到https://pypi.python.org/pypi/pyocr/0.4.1下載pyocr-0.4.1.tar.gz
解壓後,進入pyocr-0.4.1.tar.gz目錄裏執行下面的命令進行安裝:
Python setup.py install
2. 安裝PIL
針對win64位的PIL,到下面的網址下載 Pillow-2.1.0.win-amd64-py2.7.exe (md5) : https://pypi.python.org/packages/2.7/P/Pillow/Pillow-2.1.0.win-amd64-py2.7.exe#md5=3abe747fbbcdba151e48255b96639b69
下載後選默認直接安裝即可。
如果是32位系統,到http://www.pythonware.com/products/pil/index.htm下載安裝
3. 安裝tesseract-ocr
到下面網址下載:
http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe
下載後選默認直接安裝。
4. 測試
測試代碼如下:
#coding=utf-8
__author__ = 'syq'
#https://github.com/tesseract-ocr
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
try:
from pyocr import pyocr
from PIL import Image
except ImportError:
print '模塊導入錯誤,請使用pip安裝,pytesseract依賴以下庫:'
print 'http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil'
print 'http://code.google.com/p/tesseract-ocr/'
raiseSystemExit
tools = pyocr.get_available_tools()[:]
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
print("Using '%s'" %(tools[0].get_name()))
printtools[0].image_to_string(Image.open('D:\\123.png'),lang='eng')
print tools[0].image_to_string(Image.open('D:\\3434.png'),lang='chi_sim')
#printtools[0].image_to_string(Image.open('D:\\3535.png'),lang='chi_sim')
123.png
3434.png
運行結果:
c:\python27\python my_ocr_test.py
Using 'Tesseract (sh)'
7364
Traceback (most recent call last):
File"my_ocr_test.py", line 26, in <module>
printtools[0].image_to_string(Image.open('D:\\3434.png'),lang='chi_sim')
File "build\bdist.win-amd64\egg\pyocr\tesseract.py", line 322,in image_to_string
pyocr.tesseract.TesseractError:(-1073741819, '')
可見,英文可以正確識別,可是中文識別不了。
網上找到的解決方法如下:
1. 下載tesseract-ocr的中文庫,地址:https://codeload.github.com/tesseract-ocr/tessdata/zip/master,裏面包含tesseract所有的文字庫,大約1.1G,chi_sim.traineddata爲簡體中文庫,將該文件放至C:\ProgramFiles (x86)\Tesseract-OCR\tessdata目錄下。
2. 控制檯切換至C:\ProgramFiles (x86)\Tesseract-OCR\tessdata,使用命令行執行:
combine_tessdata -e chi_sim.traineddatachi_sim.config
執行完後,在目錄下出現chi_sim.config的文件,打開該文件;
在allow_blob_division F這一行的前面加#,註釋掉
即:#allow_blob_division F
然後,在執行命令行:
combine_tessdata -o chi_sim.traineddata chi_sim.config
到此在使用 chi_sim.traineddata文件就不會報read_params_file: parameternot found: allow_blob_division
當然,要使用上面的命令行,需要安裝Tesseract-OCR
以上步驟摘自http://www.cnblogs.com/syqlp/p/5460971.html,不能正確執行。不知是不是系統版本的原因。
至此,文字識別,已實現了英文和數字的正確識別。