文本识别 (OCR)引擎之Tesseract的使用

本文涉及的产品
票据凭证识别,票据凭证识别 200次/月
个人证照识别,个人证照识别 200次/月
企业资质识别,企业资质识别 200次/月
简介: esseract是一个开源文本识别 (OCR)引擎,用于识别图片中的文字并将其转换为可编辑的文本。

Tesseract

概述

Tesseract是一个开源文本识别 (OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本。

Tesseract能够将印刷体文字图像转换成可编辑文本,它支持多种语言,并且在许多平台上都可使用,包括Windows、Mac OS和Linux。Tesseract可以处理各种图像文件格式,如JPEG、PNG、TIFF等。

Tesseract的主要功能是识别图像中的文字,并将其转换成机器可读的文本内容。它采用了一系列图像处理、特征提取和机器学习技术来实现文字识别的过程。Tesseract算法的基础是使用训练好的模型来识别字符,并通过上下文和语言模型来提高识别准确性。

GitHub地址:https://github.com/tesseract-ocr/tesseract

常见OCR识别平台

微软Azure图像识别:https://azure.microsoft.com/zh-cn/services/cognitive-services/computer-vision

有道智云文字识别:https://ai.youdao.com

阿里云图文识别:https://www.aliyun.com/product/cdi

腾讯OCR文字识别:https://cloud.tencent.com/product/ocr

下载安装

安装说明

https://tesseract-ocr.github.io/tessdoc/Installation.html

官方不提供最新版windows平台安装包,只有相对略老的3.02.02版本

https://sourceforge.net/projects/tesseract-ocr-alt/files/

直接下载

https://sourceforge.net/projects/tesseract-ocr-alt/files/tesseract-ocr-setup-3.02.02.exe/download

德国曼海姆大学发行的3.05版本下载地址

http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.00dev.exe

新版都是三方维护和管理的安装包

UB Mannheim提供的: https://github.com/UB-Mannheim/tesseract/wiki

https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w32-setup-5.3.0.20221222.exe

https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.0.20221222.exe

安装后得到如下目录
image.png

配置

1.配置语言字体库

在安装目录下,默认有个 tessdata目录,该目录中存放的是语言字库文件
image.png

访问:https://github.com/tesseract-ocr/tessdata项目,下载需要的语言字库文件,例如中文字库:chi_sim.traineddata下载后放到该目录即可。
image.png

或者访问:https://tesseract-ocr.github.io/tessdoc/Data-Files寻找合适的版本下载

2.配置环境变量

添加PATH环境变量,可方便的执行tesseract命令

D:\Development\Tesseract-OCR

添加TESSDATA_PREFIX变量名,将语言字库文件夹添加到变量中

D:\Development\Tesseract-OCR\tessdata

命令使用

打开命令行窗口,输入tesseract -v命令进行验证。

C:\Users\Admin>tesseract -v
tesseract v5.3.0.20221222
 leptonica-1.78.0
  libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
 Found AVX2
 Found AVX
 Found FMA
 Found SSE4.1
 Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5
 Found libcurl/7.77.0-DEV Schannel zlib/1.2.11 zstd/1.4.5 libidn2/2.0.4 nghttp2/1.31.0

显示帮助

C:\Users\Admin>tesseract --help
Usage:
  tesseract --help | --help-extra | --version
  tesseract --list-langs
  tesseract imagename outputbase [options...] [configfile...]

OCR options:
  -l LANG[+LANG]        Specify language(s) used for OCR.
NOTE: These options must occur before any configfile.

Single options:
  --help                Show this help message.
  --help-extra          Show extra help for advanced users.
  --version             Show version information.
  --list-langs          List available languages for tesseract engine.

显示当前训练语言列表

C:\Users\Admin>tesseract --list-langs
List of available languages in "D:\Development\Tesseract-OCR/tessdata/" (3):
chi_sim
eng
osd

语法

英文: tesseract imagename outputbase [-l lang] [--psm pagesegmode]

中文:命令程序    被识别图片    输出文件    -l 语言    --psm 识别级别
-l eng:代表使用英语识别

-psm 7:表示用单行文本识别

pagesegmode可选值:

0 =定向和脚本检测(OSD)
1 =带OSD的自动页面分割
2 =自动页面分割,但没有OSD或OCR
3 =全自动页面分割,但没有OSD(默认)
4 =假设一列可变大小的文本
5 =假设一个统一的垂直对齐文本块
6 =假设一个统一的文本块
7 =将图像作为单个文本行处理
8 =把图像当作一个单词
9 =把图像当作一个圆圈中的一个词来对待
10 =将图像作为单个字符处理

测试验证

tesseract.exe D:\dev\test.png D:\dev\out  -l eng --psm 7

image.png

tesseract.exe D:\dev\test2.png D:\dev\out  -l chi_sim  --psm 7

image.png

Tesseract的使用

安装python库

# PIL用于打开图片文件
pip/pip3 install pillow

# pytesseract模块用于从图片中解析数据
pip/pip3 install pytesseract

基本使用

# 导入模块
import pytesseract
# 导入图片库,需要安装库: pip install Pillow
from PIL import Image

# 创建图片对象,使用pillow库加载图片
image = Image.open("E:\\dev\\test.png")

# 识别图片
text = pytesseract.image_to_string(image, config="--psm 7")
print(text)

可能的异常

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

方案一:

# 导入模块
import pytesseract
# 导入图片库,需要安装库: pip install Pillow
from PIL import Image

# 指定tesseract目录,该目录是安装tesseract-OCR的目录:
pytesseract.pytesseract.tesseract_cmd = r'D:\Development\Tesseract-OCR\tesseract.exe'

# 创建图片对象,使用pillow库加载图片
image = Image.open("E:\\dev\\test.png")
# 识别图片
text = pytesseract.image_to_string(image, config="--psm 7")
print(text)

方案二:

在pytesseract库下的pytesseract.py文件中找到tesseract_cmd = 'tesseract',修改成

tesseract_cmd = r'D:\Development\Tesseract-OCR\tesseract.exe'

image.png

D:\Development\Python\env\py\Scripts\python.exe D:/WorkSpace/Python/demo/apps/zd_admin/test/test.py
Tesseract


Process finished with exit code 0

更换语言字体库识别

# 导入模块
import pytesseract
# 导入图片库,需要安装库: pip install Pillow
from PIL import Image

# 指定tesseract目录,该目录是安装tesseract-OCR的目录:
pytesseract.pytesseract.tesseract_cmd = r'D:\Development\Tesseract-OCR\tesseract.exe'

# 创建图片对象,使用pillow库加载图片
image = Image.open("E:\\dev\\test2.png")

# 使用tesseract识别图像的文字,chi_sim中文简体:
text = pytesseract.image_to_string(image, lang='chi_sim', config='--psm 6')
print(text)

image.png

Tesseract的训练

Tesseract的识别是有点不够准确,因此可以进行Tesseract的训练提高tesseract识别字符准确率。

Tesseract是支持多种语言的识别,需要下载并安装相应语言的训练数据文件,这些文件可以在Tesseract的GitHub页面的essdata目录中找到。

Tesseract的训练可以使用jTessBoxEditor训练工具来训练样本

相关文章
|
1天前
|
机器学习/深度学习 人工智能 文字识别
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
k1视觉思考模型是kimi推出的k1系列强化学习AI模型,具备端到端图像理解和思维链技术,能够在数学、物理、化学等领域表现优异。本文详细介绍了k1视觉思考模型的功能、技术原理、使用方法及其在多个应用场景中的表现。
99 68
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
|
4月前
|
机器学习/深度学习 存储 文字识别
OCR -- 文本识别 -- 实践篇
OCR -- 文本识别 -- 实践篇
63 1
|
5月前
|
JSON 文字识别 数据格式
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
|
4月前
|
机器学习/深度学习 文字识别 自然语言处理
OCR -- 文本识别 -- 理论篇
OCR -- 文本识别 -- 理论篇
80 0
|
4月前
|
数据采集 机器学习/深度学习 文字识别
OCR -- 文本检测 - 训练DB文字检测模型
OCR -- 文本检测 - 训练DB文字检测模型
88 0
|
4月前
|
文字识别 算法 固态存储
OCR -- 文本检测
OCR -- 文本检测
45 0
|
5月前
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
5月前
|
机器学习/深度学习 人工智能 文字识别
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
|
5月前
|
机器学习/深度学习 人工智能 文字识别
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
|
5月前
|
文字识别 新能源
文本,文字识别14,身份证和车牌识别接口
文本,文字识别14,身份证和车牌识别接口