python库介绍-pytesseract: OCR光学字符识别

简介

可以使用pytesseract库从图像中提取文本。Tesseract是一款由Google赞助的开源OCR。 pytesseract是python包装器,它为可执行文件提供了pythonic API。

Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体"。下图是一个正八胞体绕着两个四维空间中互相正交的平面进行双旋转时的透视投影。不过这里要讲的,是一款以其命名的开源 OCR(Optical Character Recognition, 光学字符识别) 软件。

所谓 OCR 是图像识别领域中的一个子领域,该领域专注于对图片中的文字信息进行识别并转换成能被常规文本编辑器编辑的文本。

Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,然后在 2005 年开源,自 2006 年后由 Google 赞助进行后续的开发和维护。

在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在现在的免费 OCR 引擎中,其识别精度也仍然是出类拔萃的。因为其免费与较好的效果,许多的个人开发者以及一些较小的团队在使用着 Tesseract ,诸如验证码识别、车牌号识别等应用中,不难见到 Tesseract 的身影。

python_lib_ocr_tesseract.gif

安装

以ubuntu 16.04为例

# pip3 install pytesseract
# apt install tesseract-ocr tesseract-ocr-chi-sim

快速入门

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author:    china-testing@126.com wechat:pythontesting qq群:144081101
# CreateDate: 2018-04-25
import pytesseract as pt
import requests
from PIL import Image

#img = Image.open("textinimage.png")
print("英文:")
url = "https://china-testing.github.io/images/python_lib_ocr_en.png"
img = Image.open(requests.get(url, stream=True).raw)
text = pt.image_to_string(img)
print(text)
#img = Image.open("textinimage.png")
print("中文:")
url = "https://china-testing.github.io/images/python_lib_ocr.PNG"
img = Image.open(requests.get(url, stream=True).raw)
text = pt.image_to_string(img,lang='chi_sim')
print(text)

Alt Text

Alt Text

执行结果

$ python3 04_10_perform_ocr.py 
英文:
This is an image containing text.
And some numbers 123456789

And also special characters: !@#$%"&*(_+
中文:
pyth0"自动化测试人工智能

可见中文识别的效果并不太好,为此很多公司进行机器学习来改进。

另外网易的有道云笔记的OCR效果做得很不错,白描的凑合能用,qq的扫二维码也可以识别文字,但是做得比较烂。

本文最新代码地址,后续相关ocr的资料也会放在这里。

另外tesseract也可以命令行执行:

$ tesseract test22.png  stdout -l chi_sim
pyth0n自动化测试人工智能

参考资料

links