在win10(64位)系統下實現python的文字識別功能

本文參考了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,不能正確執行。不知是不是系統版本的原因。

 

至此,文字識別,已實現了英文和數字的正確識別。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章