我心中的王者:Python-文字识别系统

我心中的王者:Python-文字识别系统

Tesseract OCR是一个文字识别(OCR, Optical Character Recognition)的系统,可以在多个平台上运作,目前这是一个开放资源的免费软件。1985-1994年间由惠普(HP)实验室开发,1996年开发为适用Windows系统。有接近十年期间,这个软件没有太大进展,在2005年惠普公司将这个软件释为免费使用(open source),2006年起这个软件改由Google赞助与维护。

本章笔者将简单介绍使用Python处理文字识别,在上一章笔者有说明目前有许多网站在进入前需要输入验证码,这一章将用实例说明,如何处理这些验证码。同时也将说明使用这个系统识别繁体和简体中文图文件。

29-1 安装Tesseract OCR

使用这套软件需要下载,请至下列网站。

http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe

①首先将看到下列左图画面。

②请按Next按钮,于第4个画面你将看到下列右图。
在这里插入图片描述

③请选择全部,然后按Next按钮,如下列左图。

④上述请使用默认目录安装,请按Next按钮,接着画面可以使用预设,下列右图是安装过程画面。
在这里插入图片描述

⑤下列左图是安装结束画面。

⑥安装完成后,下一步是将Tesseract-OCR所在的目录设定在Windows操作系统的path路径内,这样就不会有找不到文件的问题。首先打开控制面板的系统设置,如下列右图。
在这里插入图片描述

⑦选择高级系统设置,在高级选项卡单击环境变量按钮,在系统变量栏点path选项,会出现编辑系统变量对话框,请在变量值字段输入所安装Tesseract安装目录,如果是依照默认模式输入,路径如下:

 C:\Program Files (x86)\Tesseract-OCR

上述路径建议用复制方式处理,需留意不同路径的设定彼此以“;”隔开。

⑧完成后,请单击确定按钮。如果想要确定是否安装成功,可以在命令行窗口输入“tesseract -v”,如果列出版本信息,就表示设定成功了。
在这里插入图片描述

29-2 安装pytesseract模块

pytesseract是一个Python与Tesseract-OCR之间的接口程序,这个程序的官网就自称是Tesseract-OCR的wrapper,它会自行调用Tesseract-OCR的内部程序执行识别功能,我们调用pytesseract的方法,就可以完成识别工作,可以使用下列方式安装这个模块。

 pip install pytesseract

29-3 文字识别程序设计

安装完Tesseract-OCR后,预设情况下是可以执行英文和阿拉伯数字的识别,下列是笔者采用数字与英文的图片文件执行识别,并将结果印出(ch29_1.py)与印出和存储(ch29_2.py),在使用pytesseract前,需要导入pytesseract模块。

 import pytesseract

由于这个pytesseract会自行处理和tesseract-OCR的接口,所以程序可以不用导入tesseract模块。这个模块主要是使用image_to_string( )方法,执行图像识别,然后将结果传回,如果识别英文或数字可以不必额外参数,如果识别其他语言,则需加上lang=‘chi_tra’(这是识别繁体中文)参数,chi_tra是繁体中文的参数名称,细节可参考29-4节。

程序实例ch29_1.py:这个程序会识别图片的文字,同时输出执行结果,下列是内含文字要识别的图片内容。
在这里插入图片描述

下列是程序内容。

# ch29_1.py
from PIL import Image
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'D:\Tesseract-OCR\tesseract.exe'
text  = pytesseract.image_to_string(Image.open(r'E:\桌面Desktop\Python王者归来\代码\ch29\data29_1.jpg'))
print(text)




执行结果 这个程序无法在Python idle环境执行,下列在命令提示符模式执行。

4DDKR

程序实例ch29_2.py:这个程序会执行识别图片的文字,除了输出文字,也会将文字存入out29_2.txt文件内,下列是内含文字要识别的图片内容。
在这里插入图片描述

下列是程序内容。

# ch29_2.py
from PIL import Image
import pytesseract

text  = pytesseract.image_to_string(Image.open('E:\桌面Desktop\Python王者归来\代码\ch29\data29_2.jpg'))
print(text)
with open('E:\桌面Desktop\Python王者归来\代码\ch29\out29_2.txt', 'w') as fn:
    fn.write(text)

执行结果 下列是程序执行结果。

Users \Jiin-l

vei>echo %path%

下图是所建立的out29_2.txt文件内容。

在这里插入图片描述

29-4 识别繁体中文

Tesseract-OCR也可以识别繁体中文,这需要指示程序引用中文数据文件,这个繁体中文数据文件名称是chi-tra.traineddata,在29-1节的安装画面中,笔者指出了需要设定安装语言文件。
在这里插入图片描述

如果读者依照上面指示安装,可以在\tessdata文件夹下看到chi_tri.trianeddata文件,下面将以实例ch29_3.py说明识别下列繁体中文的图片文件。
在这里插入图片描述

程序实例ch29_3.py:执行繁体中文图片文字的识别,这个程序最重要的是笔者在image_to_string( )方法内增加了第2个参数lang=‘chi_tra’参数,这个参数会引导程序使用繁体中文数据文件做识别。

# ch29_3.py
from PIL import Image
import pytesseract

text  = pytesseract.image_to_string(Image.open('E:\桌面Desktop\Python王者归来\代码\ch29\data29_3.jpg'),
                                    lang='chi_tra')
print(text)
with open('E:\桌面Desktop\Python王者归来\代码\ch29\out29_3.txt', 'w') as fn:
    fn.write(text)

执行结果

1:從無到有一步一步教導讀

2:學習本書不需要

書已灌溉了統計知識給你

R 語言的使
統計基礎,但在無形中

本

在上述识别处理中,只有一个字错,这是一个非常好的识别结果。不过笔者在使用时发现,如果图片文件的字比较小,会有较多识别错误情况。

29-5 识别简体中文

识别简体中文和繁体中文步骤相同,只是导入的是chi_sim.trianeddata简体中文数据文件,下面将以实例ch29_4.py说明识别下列简体中文的图片文件。
在这里插入图片描述

程序实例ch29_4.py:执行简体中文图片文字的识别,这个程序最重要的是笔者在image_to_string( )方法内增加了第2个参数“lang=‘chi_sim’”参数,这个参数会引导程序使用简体中文数据文件做识别。这个程序另外需留意的是,第8行在打开文件时需要增加encoding=‘utf-8’,才可以将简体中文写入文件。

# ch29_4.py
from PIL import Image
import pytesseract

text  = pytesseract.image_to_string(Image.open('E:\桌面Desktop\Python王者归来\代码\ch29\data29_4.jpg'),
                                               lang='chi_sim')
print(text)
with open('E:\桌面Desktop\Python王者归来\代码\ch29\out29_4.txt', 'w', encoding='utf-8') as fn:
    fn.write(text)

执行结果

1: 从无到有一步一步教导读者 R 语言的使用
2: 学习本书不需要有统计基础,但在无形中本
已灌溉了统计知识给你

在使用时,笔者也发现如果发生无法识别情况,程序将响应空白。
在这里插入图片描述

  • 43
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值