小科普
光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,而后对图像文件进行分析处理,获取文字及版面信息.
Tesseract的OCR引擎最早由HP实验室于1985年研发,2005年,交由Google对Tesseract进行改进、优化工做。
准备工做
1.PIL 、Pytesseractsegmentfault
from PIL import Image from pytesseract import image_to_string
2.安装引擎 Tesseract-OCRapp
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 (密码:3mzq) 放到安装目录:Tesseract-OCR\tessdata文件夹内,再整张图优化
代码骚做修改(,lang='chi_sim')便可spa
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)
没毛病.net
其实,复杂图片的来不了,须要处理一下,好比这张图片:3d
这样处理:code
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()一下处理后的结果:blog
最后,整合一下:图片
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的吧
若是你用来做为验证码识别。可能会用到 截屏和裁剪