pytesseract提取识别图片中的文字

目录

1、获取tesseract版本号

2、获取语言包列表

3、识别图片中的文字

4、获取图片中文字的详细信息

5、识别图片中的文字和位置

6、识别osd信息

7、识别并生成xml文件

避坑指南:


 pytesseract是对Tesseract-OCR命令行的封装,实际上底层调用的还是tesseract可执行文件,所以在使用pytesseract前需要完成Tesseract-OCR软件安装和语言包安装,详细方法可以参考 Tesseract-OCR5.0软件安装和语言包安装(Windows系统)。

pytesseract可以通过pip安装,当前(2021.11)最新版本为0.3.8:

pip install pytesseract

1、获取tesseract版本号

get_tesseract_version()获取tesseract的版本号,注意并不是pytesseract的版本号:

#juzicode.com / VX公众号:桔子code  
import pytesseract as ts
version = ts.get_tesseract_version()
print('version:',version)

运行结果:

version: 5.0.0-rc1.20211030

结果和在命令行执行”tesseract –version”看到的版本号是一样的:

E:\juzicode\tess>tesseract --version
tesseract v5.0.0-rc1.20211030

2、获取语言包列表

通过get_languages()获取安装的语言包列表:

#juzicode.com / VX公众号:桔子code  
import pytesseract as ts
langs = ts.get_languages()
print('langs:',langs)

运行结果:

langs: ['chi_sim', 'eng', 'osd']

和在命令行用“tesseract –list-langs”检查语言包得到的结果是一样的:

E:\juzicode\tess>tesseract --list-langs
List of available languages (3):
chi_sim
eng
osd

3、识别图片中的文字

image_to_string()用来识别图片中的文字,最简单的用法传入2个入参,一个是图片的文件名称,一个是识别所用的语言包类型,比如要识别下图中的文字,这是一段从pdf文件中截屏的片段,文件名为bookseg.png,语言包选择chi_sim:

img_fn = 'bookseg.png'
lang = 'chi_sim'
text = ts.image_to_string(img_fn,lang)
print(text)

运行结果:

引 言数 字 图 像 处 理 方 法 的 重 要 性 源 于 两 个 主 要 应 用 领 域 : 改 善 图 示 信 息 以 便 人 们 解 释 ; 为 存 储 、 传
输 和 表 示 而 对 图 像 数 据 进 行 处 理 , 以 便 于 机 器 自 动 理 解 。 本 章 有 几 个 主 要 目 的 : (1) 定 义 我 们 称 之 为
图 像 处 理 领 域 的 范 围 ; (2) 从 历 史 观 点 回 顾 图 像 处 理 的 起 源 ; (3) 通 过 考 察 一 些 主 要 的 应 用 领 域 , 给 出图 像 处 理 技 术 状 况 的 概 念 ; (4) 筒 要 讨 论 数 字 图 像 处 理 中 所 用 的 主 要 方 法 ; (5) 概 述 通 用 目 的 的 典 型 图
像 处 理 系 统 的 组 成 ; (6) 列 出 公 开 发 表 的 数 字 图 像 处 理 领 域 的 一 些 图 书 和 文 献 。

从这个例子可以看到识别清晰度较高的图片效果还是非常好的。

除了前面介绍的传入图片文件名称的方法,还可以传入图像的numpy数组,这样就可以和pillow、opencv等模块配合使用,在某些场合下就可以先用pillow或opencv等做一些预处理再传入到image_to_string()中识别。

img_fn = 'bookseg.png'
lang = 'chi_sim'
img = cv2.imread(img_fn,0)
cv2.imwrite('gray-bin.jpg',img)
text = ts.image_to_string(img,lang) #第1个参数传入numpy类型
print(text)

image_to_string()还可以用config参数配置tesseract的命令选项,所有的可选参数组成一个字符串传给config入参,使用方法为:

text = ts.image_to_string(img,lang,config='--psm 6 --oem 1 --loglevel ALL')

详细的参数选项有如下几种,可以通过tesseract的help命令查询到:

OCR options:--tessdata-dir PATH   Specify the location of tessdata path.--user-words PATH     Specify the location of user words file.--user-patterns PATH  Specify the location of user patterns file.--dpi VALUE           Specify DPI for input image.--loglevel LEVEL      Specify logging level. LEVEL can beALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL or OFF.-l LANG[+LANG]        Specify language(s) used for OCR.-c VAR=VALUE          Set value for config variables.Multiple -c arguments are allowed.--psm NUM             Specify page segmentation mode.--oem NUM             Specify OCR Engine mode.
NOTE: These options must occur before any configfile.

4、获取图片中文字的详细信息

image_to_data()用来获取识别出来的文字的详细信息,包含识别到的文本内容,可信度,位置等:

img_fn = 'bookseg.png'
lang = 'chi_sim'
data = ts.image_to_data(img_fn,lang)
print(data)

运行结果:

最后一列是识别出来的文本内容,往前一列是识别出来的可信度,再往前4列是在图片中的位置,包含left,top,width,height等4个要素。

注意image_to_data()返回的是str类型的数据,如果要使用其中的conf可信度,left,top等位置信息,还需要经过提取、转换才能得到。

5、识别图片中的文字和位置

image_to_boxes()用来获取识别出来的文字和位置信息:

img_fn = 'bookseg.png'
lang = 'chi_sim'
boxes = ts.image_to_boxes(img_fn,lang)
print(boxes)

运行结果:

这种方法得到的位置信息和image_to_data()中得到的left,top,width,height位置信息是一样的。同样image_to_data()返回的结果也是一个字符串,如果要使用其中的单个字符和位置信息,也需要进行提取和转换。

6、识别osd信息

image_to_osd()返回识别到的osd信息:

img_fn = 'bookseg.png'
lang = 'chi_sim'
osd = ts.image_to_osd(img_fn,lang)
print(osd)
print(type(osd))

运行结果:

Page number: 0
Orientation in degrees: 0
Rotate: 0
Orientation confidence: 37.74
Script: Han
Script confidence: 1.43<class 'str'>

7、识别并生成xml文件

image_to_pdf_or_hocr()可以将识别的文字信息转为xml格式字节流,从而可以写入到xml文件中,其中入参extension设置为’hocr’:

img_fn = 'bookseg.png'
lang = 'chi_sim'    
hocr = ts.image_to_pdf_or_hocr(img_fn, lang, extension='hocr')
with open('test.xml', 'w+b') as f:f.write(hocr)  
print(type(hocr))

调用image_to_pdf_or_hocr()返回的数据类型为bytes类型,这点和前面几种方法的返回结果是有差异的,bytes类型可以用wb方式写入到文件,写入完成后打开文件可以看该文件包含了识别文字、可信度、位置信息等内容:

原文链接:http://www.juzicode.com/image-ocr-pytesseract

避坑指南:

1、提示tesseract未安装错误:

import pytesseract as ts
version = ts.get_tesseract_version()
print('version:',version)======运行结果
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
......
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

原因:一个是没有安装tesseract命令行工具,一个是安装完后没有把安装路径添加到PATH系统变量中。

2、获取不到支持的语言包:

img_fn = 'bookseg.png'
lang = 'chi_sim'
text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata')
print(text)======运行结果
pytesseract.pytesseract.TesseractError: (1, 'Error opening data file d:devTesseract-OCR5.0.0tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'chi_sim\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

使用config参数指定语言包路径时,不能使用右斜杠,只能使用左斜杠。

#text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata')
text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:/dev/Tesseract-OCR5.0.0/tessdata')

3、使用–oem 0选项时提示不支持老版本的ocr引擎,需要切换为–oem 1或者不指明oem默认使用新的ocr引擎:


img_fn = 'bookseg.png'
lang = 'eng'
text = ts.image_to_string(img_fn,lang,config='--oem 0')======运行结果
pytesseract.pytesseract.TesseractError: (1, "Error: Tesseract (legacy) engine requested, 
but components are not present in d:\\dev\\Tesseract-OCR5.0.0/tessdata/eng.traineddata!! 
Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.")

推荐阅读:

有了这个方法群聊斗图你就不会输了

只需几行代码生成22种风格各异的彩色图

你别耍我,0.1+0.2居然不等于0.3?

如何实现一个“万能”的调试打印函数

有了这款神器,什么吃灰文件都统统现形

一行代码深度定制你的专属二维码(amzqr)

桔子菌和超市老板田大爷的一次角色互换经历

改造getpass,强迫症患者再也不用担心少输字符了

来看看怎么用OpenCV解构Twitter大牛的视觉错觉图

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

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

相关文章

python 图片文字提取

转载&#xff1a;python怎么读取png(python 图像处理)-天道酬勤-花开半夏 图像处理不是一件简单的工作。 对你来说&#xff0c;一看到某样东西&#xff0c;马上就知道你在看什么很容易。 但是&#xff0c;电脑不是这样工作的。 对你来说太难的任务&#xff0c;比如复杂的算术&a…

用Python提取图片截图中的文字

《用Python“破解”某度文库等文库复制的限制》 tips:当个标题党真刺激啊 开发背景 临近期末&#xff0c;CYooQ要写许多作业。迫不得已寻找度娘解决问题&#xff0c;找到之后&#xff0c;CYooQ习惯性地ctrlc&#xff0c;当ctrlv时发现&#xff0c;emmm!?没有啊&#xff01;仔…

Python利用OCR提取图片中的文字

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Python利用OCR提取图片中的文字 很多软件内置了OCR功能&#xff0c;即图片提取文字功能。有些是免费提供给大家使用&#xff0c;但有些…

如何使用Python从图片中提取文字?

目录 Python图片识别文字一、Tesseract下载及安装二、配置环境变量三、代码部分 Python图片识别文字 一、Tesseract下载及安装 下载链接 Index of /tesseract. 点击下载适合电脑配置的最新版本 下载完成并开始安装 选择默认英文 点击下一步 点击我同意 点击为任何使用计算机…

Redis事务详解

目录 一、前言二、Redis事务 - 基本使用三、Redis事务 - 错误处理四、Redis事务 - 事务冲突1、事务所产生的问题2、悲观锁&乐观锁3、watch监听4、watch的应用场景 五、Redis 事务特性 一、前言 事务是指一个完整的动作&#xff0c;要么全部执行&#xff0c;要么什么也没有…

python--识别图片中的文字

本篇文章主要参考了 python图像处理之识别图像中的文字 这篇文章&#xff0c;在实现的过程中出现了些偏差&#xff0c;特此记录。因为此时笔者不是第一次安装&#xff0c;所展示的结果会和首次安装的结果有所差别。 1.安装PIL 以管理员的身份打开命令提示符&#xff0c;输入&…

【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

【Python例】利用 python 进行图片文字信息的提取 — OCR-EasyOCR 本文主要用于记录&#xff0c;并使用 python 脚本进行图片文字信息的生成。 什么是 OCR&#xff1f; OCR OCR&#xff08;Optical character recognition&#xff0c;光学字符识别&#xff09;是一种将图像中的…

Python提取图片中的文字信息

Python提取图片中的文字信息 使用的Python库 Python tesseract是Python的一个光学字符识别&#xff08;OCR&#xff09;工具。也就是说&#xff0c;它将识别并“读取”嵌入图像中的文本。 Python tesseract是Google tesseract OCR引擎的包装器。它还可用作tesseract的独立调…

Python识别图片中的文字

Python识别图片中的文字 一、前言 不知道大家有没有遇到过这样的问题&#xff0c;就是在某个软件或者某个网页里面有一篇文章&#xff0c;你非常喜欢&#xff0c;但是不能复制。或者像百度文档一样&#xff0c;只能复制一部分&#xff0c;这个时候我们就会选择截图保存。但是…

python提取图片中的文字

python提取图片中的文字 准备工作原图片完整代码结果预览 OCR&#xff0c;全称Optical character recognition&#xff0c;中文译名叫做光学文字识别。它把图像中的字符&#xff0c;转换为机器编码的文本的一种方法。OCR技术在印刷行业应用得非常多&#xff0c;也广泛用于识别图…

python代码提取图片文字

步骤一&#xff1a;安装两个库 需要安装pytesseract和PIL两个库&#xff0c;然后还要安装tesseract-ocr识别引擎 问题一&#xff1a;安装两个库失败 这个博主讲的很详细参考链接lpython3安装pil报错 使用pip命令安装这两个库&#xff08;pip命令无法使用的参考我的这篇文章将…

【Python • 图片识别】pytesseract快速识别提取图片中的文字

提示&#xff1a;本文多图&#xff0c;请手机端注意流量。 文章目录 前言一、配置环境1. 安装python依赖2. 安装识别引擎安装tesseract识别引擎&#xff08;可跳过&#xff09;验证是否安装成功 二、使用步骤1.引入库2.提取图片文字3.运行效果 总结完整代码 前言 利用python做…

MySQL进阶- Linux安装 和 索引

目录 Linux安装索引索引的概述索引的结构索引结构的介绍BtreeBtreeHash 索引的分类索引的语法&#xff08;创建&#xff0c;查看&#xff0c;删除等&#xff09;SQL性能分析SQL的执行频率&#xff08;查看SQL的执行频率&#xff09;慢查询日志show profilesexplain执行计划 索引…

Nginx同时支持Http和Https的配置

现在的网站支持Https几乎是标配功能&#xff0c;Nginx能很好的支持Https功能。下面列举一个配置同时支持Http和Https的功能。 需要注意的是&#xff1a;既然选择使用Https&#xff0c;就是为了保证通信安全&#xff0c;那么就没必要再用Http进行通信了。在URL中还支持Http的方式…

Nginx配置同时支持http和https两种方式访问

http&#xff1a; https: Nginx的ssl模块安装 进入到目录的sbin目录下&#xff0c;输入 #注意这里是大写的V&#xff0c;小写的只显示版本号 ./nginx -V 如果出现 (configure arguments: --with-http_ssl_module), 则已安装&#xff08;下面的步骤可以跳过&#xff0c;直接进…

HTTP 和 HTTPS 的区别(面试常考题)

前言 无论是在校学习还是找工作的时候&#xff0c;老师和面试官都问过同学 HTTP 和 HTTPS 的区别。平时上网的时候也没有关注这个问题&#xff0c;只是知道计算机网络里 HTTP 的概念&#xff0c;所以最近才查资料好好补补这一块。其实这一块的知识延伸很广&#xff0c;如果之前…

网站开发(一)http和https的区别 http是什么?http协议的特性 http与https网站通信协议两者的有什么不同呢?

目录 一、前言 二、HTTP是什么&#xff1f; 1、HTTP发展阶段 2、HTTP工作原理 3、HTTP的工作特性 三、HTTP和HTTPS区别 1、http与https端口不同 2、http和https应用 ? ? ? ? 2.1 http应用 ? ? ? ? 2.2 https应用 3、 http和https区别简易图 一、前言 HTTP是…

HTTP和HTTPS区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息&#xff0c;HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了Web浏览器和网站服务器之间的传输报文&#xff0c;就可以直接读懂其中的信息&#xff0c;因此&…

HTTP和HTTPS的工作原理及区别

一、HTTP和HTTPS的基本概念 HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从Web服…

Spring Boot项目同时使用http和https

有些时候项目需要同时监听在不同的端口上&#xff0c;比如同时监听http80和https 443端口&#xff0c;这时我们需要自定义web server。 假设我们需要项目同时使用http和https两种协议提供服务&#xff0c;分别使用端口80和443。 我们知道Spring Boot内置了tomcat,jetty,under…