您的位置:首页 > 编程语言 > Python开发

在win10(64位)系统下实现python的文字识别功能

2017-11-14 12:59 661 查看
本文参考了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,不能正确执行。不知是不是系统版本的原因。
 
至此,文字识别,已实现了英文和数字的正确识别。
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python OCR