Python Tesseract 图片识别-小操练
小科普
光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息.
Tesseract的OCR引擎最先由HP实验室于1985年研发,2005年,交由Google对Tesseract进行改进、优化工作。
准备工作
1.PIL 、Pytesseract
from PIL import Image from pytesseract import image_to_string
2.安装引擎 Tesseract-OCR
ok 用画图工具整张简单的图片(vm3.png)小试牛刀
上代码
from PIL import Image from pytesseract import image_to_string img = Image.open("vm3.png"); text = image_to_string(img) print(text)
别走,留步,真的只有那么多,不信看结果
支持中文
but,Tesseract是老外开发的,默认不支持中文,需要我们加个中文语言包
将文件chi_sim.traineddata (密码:nd6p) 放到安装目录:Tesseract-OCR\tessdata文件夹内,再整张图
代码骚作修改(,lang='chi_sim')即可
from PIL import Image from pytesseract import image_to_string img = Image.open("vm3.png"); text = image_to_string(img,lang='chi_sim') print(text)
没毛病
骚微复杂图像处理
其实,复杂图片的来不了,需要处理一下,比如这张图片:
这样处理:
img = Image.open("vm.png"); imgry = img.convert("L") threshold = 140 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) out = imgry.point(table, '1') out.show()
show()一下处理后的结果:
最后,整合一下:
img = Image.open("vm.png"); imgry = img.convert("L") threshold = 140 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) out = imgry.point(table, '1') text = image_to_string(out) print(text)
我就知道你会回来,如果你在运行中遇到以下问题:
tesseract is not installed or it's not in your path
一图解万愁
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!
添加环境变量:
变量名:TESSDATA_PREFIX 变量值:testdata的路径
如果加了还不行,重启电脑!
如果还不行,试试百度OCR的吧
如果你用来作为验证码识别。可能会用到截屏和裁剪
相关推荐
alanlonglong 2020-06-02
文山羊 2020-01-10
明天你好 2020-01-08
CloudXli 2019-11-06
shonmark 2019-04-30
我心飞翔之家 2019-04-01
Jasterwisdom 2019-07-01
CloudXli 2019-06-30
qitong 2019-06-27
Onioncy 2019-06-27
nanqi 2019-06-25
mayflowers 2019-06-21
petal0 2019-05-27
tmaczt 2019-02-24
Lenskit 2018-11-02
sdwylry 2019-04-02
LipperZ 2016-01-15
yogoma 2018-07-11
CatherineC00 2018-07-11