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

news2025/2/25 5:59:45

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.exe

https://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.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

在这里插入图片描述

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
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)

在这里插入图片描述

Tesseract的训练

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

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

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

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

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

相关文章

微服务井喷时代,我们如何规模化运维?

随着云原生技术发展及相关技术被越来越多运用到公司生产实践当中,有两种不可逆转的趋势: 1、微服务数量越来越多。原来巨型单体服务不断被拆解成一个个微服务,在方便功能复用及高效迭代的同时,也给运维带来了不少挑战:…

WorkPlus AI助理,基于ChatGPT的企业级知识问答机器人

随着人工智能技术的发展,WorkPlus AI助理以ChatGPT对话能力为基础,将企业数据与人工智能相结合,推出了面向企业的知识问答机器人。这一创新性的解决方案帮助企业高效管理和利用自身的知识资产,助力企业级人工智能的构建。与传统的…

React 入门实例教程

目录 一、HTML 模板 二、ReactDOM.render() 三、JSX 语法 四、组件 五、this.props.children 六、PropTypes 七、获取真实的DOM节点 八、this.state 九、表单 十、组件的生命周期 constructor() componentWillMount() render() componentDidMount() 组件生命周期…

MOV导出序列帧并在Unity中播放

MOV导出序列帧并在Unity中播放 前言项目将MOV变成序列帧使用TexturePacker打成一个图集将Json格式精灵表转换为tpsheet格式精灵表导入Unity并播放总结 鸣谢 前言 收集到一批还不错的MG动画,想要在Unity中当特效播放出来,那首先就得把MOV变成序列帧&…

Say0l的安全开发-弱口令扫描工具-My-crack【红队工具】

写在前面 终于终于,安全开发也练习一年半了,有时间完善一下项目,写写中间踩过的坑。 安全开发的系列全部都会上传至github,欢迎使用和star。 工具链接地址 https://github.com/SAY0l/my-crack 预览 My-Crack 工具介绍 更适合…

Java 毕业设计-基于SpringBoot的在线文档管理系统

基于SpringBoot的在线文档管理系统 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术栈简介 文末获取源码 开发语言:Java 框架:sp…

2020年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:铺砖 对于一个2行N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。 时间限制:3000 内存限制:131072 输入 整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250 输出 如题 样例输入 2 8 12 1…

声网agora创建账号

1. 注册声网账号 https://sso2.agora.io/cn/v4/signup/with-sms 2. 创建项目 项目管理 - 创建项目 3. 项目配置 appid: xxxx token: xxxx 4. 开发文档 https://docportal.shengwang.cn/cn/All/code-samples?platformiOS

免费绕过苹果MDM配置锁/密码界面工具-Hackt1vator Unlock

Hackt1vator Unlock Hackt1vator Unlock是一款免费免费绕过苹果MDM配置锁/密码界面工具&#xff0c;帮助那些忘记iCloud账号密码而无法使用的iPhone、iPad的用户绕过 icloud 激活、mdm 和密码锁定&#xff0c;目前工具支持跳过MDM配置锁&#xff0c;支持绕过物主与锁定界面&am…

如何按文件名称自动归类,助您轻松管理文件

在日常工作和生活中&#xff0c;我们经常会遇到大量的文件需要管理。如果这些文件没有得到良好的归类和整理&#xff0c;不仅会浪费我们的时间和精力&#xff0c;还会给我们带来困扰和混乱。今天我们一起来看看怎么按文件名称来自动归类&#xff0c;批量整理文件&#xff0c;让…

postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用

前言&#xff1a; 有的时候有需求需要迁移Oracle数据库的数据到postgresql&#xff0c;那么&#xff0c;其实可供选择的工具是比较多的&#xff0c;但从迁移效率&#xff0c;准确度这些角度来选择的话&#xff0c;无疑还是GitHub上的开源免费工具ora2pg比较合适的。 ora2pg的…

windows系统下使用crashpad为vs2019项目在崩溃时生成dump文件(步骤超详细)

我们在刚开始项目开发时&#xff0c;经常会因为各种粗心造成各种各样的容易使项目运行时崩溃的代码&#xff0c;比如&#xff0c;给空指针的指向赋值。然而&#xff0c;当项目的文件数非常多时&#xff0c;想找到出错的代码的位置是费事而让人心烦的。crashpad就可以在项目运行…

【Linux】使用 Alist 实现阿里云盘4K播放

一、安装 Alist 官方文档 默认安装在 /opt/alist 中 curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install自定义安装路径&#xff0c;将安装路径作为第二个参数添加&#xff0c;必须是绝对路径&#xff0c;如果路径以 alist 结尾&#xff0c;则直接安装到给定…

vite+vue 项目使用 electron

创建 vitevue 项目 npm create viteElectron 官方文档 electron 安装 安装 electron npm install --save-dev electron新建 electron 的入口文件&#xff0c;我这里在根目录新建 electron 文件夹&#xff0c;然后新建main.js和preload.js文件 根据官网说明&#xff0c;将以下…

企业架构LNMP学习笔记21

URL重写&#xff1a; ngx_http_rewrite_module 模块用于使用PCRE正则表达式更改请求URI&#xff0c;返回重定向&#xff0c;以及有条件地选择配置。 return 该指令用于结束结束规则的执行并返回状态码给客户端。 403 Forbidden.服务器已经理解请求,但是拒绝执行它 404 Not…

【动手学深度学习】--序列模型

文章目录 序列模型1.序列数据2.统计工具3.自回归模型3.1马尔科夫假设3.2潜变量模型 4.训练5.预测 序列模型 学习视频&#xff1a;序列模型【动手学深度学习v2】 官方笔记&#xff1a;序列模型 1.序列数据 想象一下有人正在看网飞&#xff08;Netflix&#xff0c;一个国外的视…

基于Docker从零到一实操MySql的主从复制

文章目录 一、在Docker上安装&#xff0c;启动MySQL查看docker是否安装成功安装mysql查看mysql镜像进入mysql后台操作docker Volume&#xff08;卷&#xff09;入门 MySql的主从复制1. 创建MySQL主从复制的网络2. 创建MySQL主服务器3. 创建MySQL从服务器4. 配置主从同步5.测试主…

js函数变量提升理解

var n 10function fn() {// var n 20function f() {// 没用var声明&#xff0c;去外层寻找n,直到找到windows为止&#xff0c;找到的话用的就是哟个全局变量&#xff0c;会改变原始全局变量的值n;console.log(n)}var nn 20f()console.log(n);return f}var x fn()// 会在上一…

【C++从0到王者】第二十八站:二叉搜索树的应用

文章目录 前言一、Key模型二、Key/Value模型总结 前言 二叉搜索树的在现实世界的应用很广泛&#xff0c;比如Key模型&#xff0c;Key-Value模型就是常见的两种的模型 一、Key模型 K模型&#xff1a;K模型即只有key作为关键码&#xff0c;结构中只需要存储Key即可&#xff0c…

PaddleOCR学习笔记2-初步识别服务

今天初步实现了网页&#xff0c;上传图片&#xff0c;识别显示结果到页面的服务。后续再完善。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <…