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 (密码:3mzq) 放到安装目录: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的吧
如果你用来作为验证码识别。可能会用到 截屏和裁剪

你可能感兴趣的:(python3.x,tesseract,pil,图片识别,图像处理)