zhongranxu 2019-06-27
小科普
光学字符识别(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
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的吧
如果你用来作为验证码识别。可能会用到截屏和裁剪