需求:識別圖片中的文字信息
環境:windows系統
開發語言:python
使用工具類:1.pyocr
2.PIL
3.tesseract-ocr
步驟:
1.pyocr
網絡通直接使用命令:
pip install pyocr
網絡不通,轉至https://pypi.python.org/pypi/pyocr/0.4.1下載安裝
2.安裝pil
網絡通直接使用命令:
pip install PIL
網絡不通,轉至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
exe文件,下載后直接安裝,建議默認安裝過程中的選項,安裝目錄默認C:\Program Files (x86)\Tesseract-OCR,(嘗試安裝D盤后,在cmd中調用可以,但是在python中會出現找不到tesseract的配置目錄的問題,后續再研究)
代碼:
# 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/' raise SystemExit tools = pyocr.get_available_tools()[:] if len(tools) == 0: print("No OCR tool found") sys.exit(1) print("Using '%s'" % (tools[0].get_name())) print tools[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') #print tools[0].image_to_string(Image.open('D:\\3535.png'),lang='chi_sim')
文件內容:
123.png
3434.png
輸出:
Using 'Tesseract (sh)'
7364
求彰只另UoCR第 1代
可以看到,在使用英文字庫(eng)情況下,對數字識別挺准確的,但是在使用中文簡體字庫(chi_sim)情況下,對中文文字識別結果有點不盡人意。
在整個過程中可能會遇到的問題
1.如果控制台直接輸出:“No OCR tool found”,說明未成功安裝tesseract-ocr,debug查看get_available_tools,在該方法中回去查看本機已經安裝有的ocr識別庫,有三種,
libtesseract,
tesseract,
cuneiform,
本文使用的是第二種tesseract,
tesseract具體安裝請轉至。
2.在識別帶中文的圖片,會遇到報“allow_blob_division”的錯誤,
需要下載tesseract-ocr的中文庫,地址:https://codeload.github.com/tesseract-ocr/tessdata/zip/master,里面包含tesseract多有的文字庫,chi_sim.traineddata為簡體中文庫,將該文件放至C:\Program Files (x86)\Tesseract-OCR\tessdata目錄下接下來的具體處理方法,轉至:http://www.cnblogs.com/syqlp/p/5460971.html