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

Tesseract OCR

  • Tesseract
    • 概述
    • 常见OCR识别平台
    • 下载安装
    • 配置
    • 命令使用
    • 语法
    • 测试验证
  • Tesseract的使用
    • 安装python库
    • 基本使用
    • 可能的异常
    • 更换语言字体库识别
  • Tesseract的训练

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.exehttps://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.0.20221222.exe

安装后得到如下目录
在这里插入图片描述

配置

1.配置语言字体库

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

在这里插入图片描述
访问:https://github.com/tesseract-ocr/tessdata项目,下载需要的语言字库文件,例如中文字库:chi_sim.traineddata下载后放到该目录即可。
在这里插入图片描述

或者访问: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.20221222leptonica-1.78.0libgif 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.0Found AVX2Found AVXFound FMAFound SSE4.1Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5Found 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 | --versiontesseract --list-langstesseract 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

在这里插入图片描述

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

在这里插入图片描述

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'

在这里插入图片描述

D:\Development\Python\env\py\Scripts\python.exe D:/WorkSpace/Python/demo/apps/zd_admin/test/test.py
TesseractProcess 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)

在这里插入图片描述

Tesseract的训练

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/73439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『Bug挖掘机 - 赠书02期』|〖Effective软件测试〗

大家好,我是洋子,前段时间给大家推荐了《测试设计思想》,今天再给大家推荐一本软件测试领域的新书 这本书就比较接地气了,是一本软件测试的入门书籍,但同样适用于1-3年软件测试经验的读者阅读 这本书第一章就用Java代…

深入了解 Axios 的 put 请求:使用技巧与最佳实践

在前端开发中,我们经常需要与后端服务器进行数据交互。其中,PUT 请求是一种常用的方法,用于向服务器发送更新或修改数据的请求。通过发送 PUT 请求,我们可以更新服务器上的资源状态。 Axios 是一个流行的 JavaScript 库&#xff0…

NSV60600MZ4T1G 双极型晶体管(BJT)学习总结

双极型晶体管的起源: 双极型晶体管是在1947年发明的,第一个晶体管是将两条具有尖锐端点的金属线与锗衬底(germanium substrate)形成点接触(point contact),以今天的水准来看,此第一个晶体管虽非常简陋但它却改变了整个电子工业及人类的生活方…

行测图形推理规律(一)元素组成

题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…

开源知识库平台Raneto

什么是 Raneto ? Raneto 是一个开源知识库平台,它使用静态 Markdown 文件来支持您的知识库。 官方提供了 doc & demo 网站,即是帮助文档,也是个 demo,地址:https://docs.raneto.com 准备 项目使用con…

Android之 Canvas绘制

一 Canvas介绍 1.1 Canvas 是绘制图形的重要类之一,它可以在 View 或 SurfaceView 上绘制各种图形和文本. 1.2 要创建 Canvas,首先需要有一个 View 或 SurfaceView 对象,在 View 或 SurfaceView 的绘制方法中,可以通过 Canvas 的…

华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南

目录 引出书接上回,部署spring项目,端口访问失败最后排查结果反馈 尝试的几种解决方案【未成功】1.指定tomcat启动ipv4端口2.添加开放端口规则保存规则防火墙相关命令记录 最终成功解决【成功!】用firewall成功了问题来了,如果这里…

Linux系统离线安装RabbitMQ

安装rabbitmq 1、下载安装包 首先进入官网进行安装包的下载,在下载时一定要注意erlong版本和rabbitmq-server版本匹配 rabbitmq版本对应关系:传送门 Erlong下载地址:传送门 rabbitmq-server下载地址:传送门 socat 不同版本 centos7:传送门 cent…

OJ练习第166题——课程表(拓扑排序问题)

课程表 力扣链接:207. 课程表 题目描述 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表…

2023数学建模国赛B题完整论文来啦!(含一二问求解代码及三四问仿真模拟代码)

大家好呀,从昨天发布赛题一直到现在,总算完成了全国大学生数学建模竞赛B题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 说实话团队通宵一直到现在做…

CG MAGIC进行实体渲染后!分析渲染器CR和VR的区别之处!

新手小白来说,如何选择渲染器,都会提出疑问? 渲染效果图究竟用CR渲染器还是VR渲染器呢? 今天,CG MAGIC小编通过一个真实的项目场景,实例渲染之后,CR渲染器和VR渲染器区别有哪几点? 1…

Eviews用向量自回归模型VAR实证分析公路交通通车里程与经济发展GDP协整关系时间序列数据和脉冲响应可视化...

全文下载链接:http://tecdat.cn/?p27784 河源市是国务院1988年1月7日批准设立的地级市,为了深入研究河源市公路交通与经济发展的关系,本文选取了1988-2014年河源市建市以来24年的地区生产总值(GDP)和公路通…

Java jvm 内存溢出分析

1.如何分析jvm内存溢出呢 我们经常用visualVm监控Jvm的内存,cpu,线程的使用情况,通常可以根据内存不断增长来判断内存是否存在不释放。但是我们不可能时时盯着去看,这里涉及jvm堆内存配置,堆内存参数配置和调优会在其…

uniapp中UView中 u-form表单在v-for循环下如何进行表单校验

1、数据data格式 注:rule绑定的tableFromRule中要和表单tableFrom下面放置一个同名数组,确保u-form能找到 tableFrom: {tableData: [//数据详情列表]},tableFromRule: {//校验tableData: [//数据详情列表]},formRules:{localation:[{required: true,mes…

k8s 入门到实战--部署应用到 k8s

k8s 入门到实战 01.png 本文提供视频版: 背景 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。公司部分应用进行了云原生改造&…

第 2 章 线性表 (线性表的静态单链表存储结构(一个数组只生成一个静态链表)实现)

1. 背景说明 A { c, b, e, g, f, d }B { a, b, n, f } 2. 示例代码 1) status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H#define CHECK_RET(ret) if (ret ! RET_OK) { \printf("FuncName: %-15s Line: %-5d ErrorCode: %-3d\n&…

Java网络编程( 一 )数据如何在网络上传输

数据如何在网络上传输 网络发展背景发送端和接收端网络协议分层封装 & 分用封装:分用: 传输补充(数据链路层(以太网)):ARP协议 网络发展背景 单机阶段—>局域网阶段—>广域网阶段—&…

【区块链】DeFi是什么?大白话科普文

对于一些没有玩过区块链、或者说没有真金白银的体验过这个虚拟世界的小伙伴来说,这篇文章可以帮你了解 DeFi。致力于帮你在这个线上走出这一步。 当然这不是理财建议。 文章目录 前言什么是去中心化金融?有哪些 DeFi 项目DeFi由哪几部分构成?热门DeFi项目有哪些?前言 Def…

tomcat安装、部署JSPGOU项目、Tomcat多实例

安装 官网找包 Apache Tomcat - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh 服务脚本管理文件 server.xml 主配置文件 修改8009(删除注释) 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二: 三:部署…

Docker 的分层文件系统

1 分层文件系统 UnionFS 联合文件系统 bootfs:boot file systemrootfs:root file system 分层文件系统 Docker镜像都是只读的,当容器启动时,一个新的可写层被加到镜像的顶部,这一层就是我们通常说的容器层&#xf…