图片识别工具Tesseract介绍和python搭配使用

2023-11-03

今天之所以写这篇文章,算是对pyautogui工具使用的补充,pyautogui只能通过图片像素来判断图片是否存在,如果我们想要自动化的识别图片并将它转换为文字呢?我们应该怎么做?此时tesseract可以帮助我们解决这个问题。下面我就来介绍它的环境搭建和安装方式。

一、Tesseract介绍、下载指南

1、了解Tesseract工具

Tesseract是一个 由HP实验室开发 由Google维护的开源的光学字符识别(OCR)引擎,可以在 Apache 2.0 许可下获得。它可以直接使用,或者(对于程序员)使用 API​​ 从图像中提取输入,包括手写的或打印的文本。与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练语言,提高图像转换文本的能力。

2、下载地址

tesseract官方下载地址
tesseract语言包下载
注意在语言包下载语言包时页面会崩溃,大家想用中文包的,可以进入我下面的网盘链接,想要下载其他语言包的同学,建议将链接复制到迅雷进行下载,下载速度还挺快的。

3、请注意!!!

为了更好的体验,建议下载稳定版,即如下版本,
64位电脑下载:
下载不含(dev开发版,alpha、bata等版本)
32位电脑下载:
32位电脑下载
由于官方的网站速度比较慢,在此贴上我的百度网盘链接,包含中文语言包、tesseract软件、jTessBoxEditor训练软件以及使用该软件的教程指导(jdk包)。链接如下:
百度网盘提取码:rhp6

二 、环境搭建

好了,相信聪明的你们已经下载好了吧,下面我们开始进行安装了。

2.1 版本3.05安装

3.05版本:这个注意不要勾选Additional language,勾选了无法下载会报错,建议在官网找语言包链接,通过迅雷下载。后面都是无脑操作,选择好路径就行。
3.05版本

2.2 最新版本安装

最新版5.2.0版本:这个多了个组件,里面可以勾选你想要的组件(建议下载),在这里都选择中文
最新版
Additional script勾选中文包如下:
Additional script
安装,这时会下载组件,就是速度很慢。
download
Additional language:在这里我选择不勾选,下的很慢。语言包也可以到网站获取链接通过迅雷下载。

2.3 环境搭建

接下来我们开始进行环境变量配置①在path中添加你的安装路径:D:\Program Files\Tesseract-OCR
②:变量名:TESSDATA_PREFIX,变量值:D:\Program Files\Tesseract-OCR\tessdata,这两个路径都需要配置到环境变量里面去。如下:
在这里插入图片描述
在这里插入图片描述
分别保存,打开cmd验证,输入tesseract -v验证,出现如下说明你配置好了
在这里插入图片描述
语言包配置:将下载好的语言包放入:D:\Program Files\Tesseract-OCR\tessdata
在这里插入图片描述
验证方式,在cmd输入tesseract --list-langs 运行如下说明成功:
在这里插入图片描述
到这里基本上配置好了。

2.4 举个栗子

在cmd中输入:**tesseract/? 可以查看帮助,在这里我们使用命令来进行简单的图片识别并提取文字: tesseract imagename outputbase [options…] [configfile…]
即:tesseract 输入文件名 输出文件 配置选项
在这里插入图片描述
在这里我们使用如图的图片eng.PNG来验证:在这里插入图片描述
进入图片的路径,在路径栏输入cmd, 或者自己先进入cmd慢慢cd过去;输入命令:
tesseract eng.PNG eng -l eng,其中(eng是语言,可以换成其他语言)回车后在路径会生成一个txt文件,打开显示:
“There are two reasons why
people don’t talk about things;
either it doesn’t mean anything
to them, or it means everything.”

在这里插入图片描述
到这里则所有验证通过,恭喜你一次性到位,安装成功!

三、Python中的环境搭建

3.1 安装pytesseract

由于这个软件可以和python结合起来使用,因此这里我们需要在cmd中安装包:

①python版本:3.7.9
②这里我用的是pycharm工作台,不会安装的自己百度
③安装命令:pip install pytesseract

3.2 修改配置文件

进入python安装包的路径:D:\Program Files\Python37\Lib\site-packages\pytesseract
编辑文件:pytesseract.py
修改tesseract_cmd = ‘D:\Program Files\Tesseract-OCR/tesseract.exe’,修改后在python中运行就不会报错了。

3.3 在python中验证

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @time     :2022/8/28 12:11
# @Author   :root
# @FileName :example
import pytesseract

img_path = "../chi.PNG"
result = pytesseract.image_to_string(image=img_path,lang="chi_sim",config="--psm 1")   #路径;语言;配置
print(result)

识别的图片为:在这里插入图片描述
识别效果,对于汉字还是有点问题,但是对于英文识别度很高,所以我们对于识别度不高的可以自己训练,哈哈哈。

tesseract 的 安 英 使 用 及 配 置 问 题 解 火
一 、 安 装 tesseract
二 、 配 置 环 境 变 量 “
三 、cmd “ 方 式 中 出 现 的 问 题 及 解 决 方 法
四 、 pycharm 方 式 中 出 现 的 闰 题 及 解 决 办 法
五 、 验 证 结 果

四、持续学习

今天的分享就到这里了,我后面还会分享opencv处理图片的学习。后面我也会讲tesseract在python中的基本用法,如何生成自己的验证码、二值化,模糊处理,有兴趣的同学们点个赞吧!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片识别工具Tesseract介绍和python搭配使用 的相关文章

  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • 让 VoiceChannel.members 和 Guild.members 返回完整列表的问题

    每当我尝试使用 VoiceChannel members 或 Guild members 时 它都不会提供适用成员的完整列表 我从文本命令的上下文中获取 VoiceChannel 和 Guild 如下所示 bot command name
  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 如何将 GAE 中一种 Kind 中的所有实体复制到另一种 Kind 中,而无需显式调用每个属性

    我们如何使用function clone entity 如中所述在 Python 中复制 Google App Engine 数据存储中的实体 而无需在 编译 时知道属性名称 https stackoverflow com question
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • 华为OD机试 - 计算礼品发放的最小分组数目(Java)

    题目描述 又到了一年的末尾 项目组让小明负责新年晚会的小礼品发放工作 为使得参加晚会的同事所获得的小礼品价值相对平衡 需要把小礼品根据价格进行分组 但每组最多只能包括两件小礼品 并且每个分组的价格总和不能超过一个价格上限 为了保证发放小礼品
  • vue 和 js 获取 dom节点下的某个元素,然后设置样式

    vue获取dom节点下的类名 然后修改样式 div div class a 提到岁月 你们总说它是长河 流得头也不回 div div class a 少不更事的年纪 我也用过老成口气 念过孔夫子的 逝者如斯乎 不舍昼夜 div div cl
  • 手写数字识别——算法

    识别方法一 基于结构模式 脱机识别 例子 基于基元和七段式数字的手写数字识别 日常生活中经常可以看到用七段式数字表示数字 如电子手表的数字显示等 它用火柴棍拼图的方式能够简单有效的表示出0 9 10个阿拉伯数字 例子 基于三次样条和整体特征
  • css img自适应盒子尺寸

    首先保证图片可以填满 然后纵向居中 img cantainer position relative width 260px height 150px overflow hidden img position absolute top 50
  • 最详细的Java入门完整教程,学Java先收藏了!

    从 1995 年第一个版本发布到现在 Java 语言已经在跌宕起伏中走过了 26 年 最新的 Java 版本也已经迭代到 Java 16 java是有一个庞大的生态系统 它的覆盖范围非常广 而且已经连续十几年位居开发语言的榜首 所以java
  • 浅度学习模块化与解耦

    目录 1 为什么要模块化 2 模块设计原则 3 模块化开发的的优缺点 4 解耦与通信 4 1 公共模块的下层 4 2 面向接口调用 4 3 面向协议的调用 在开篇之前引用一句话 一派是说app开发并不需要什么狗P架构 第二派说我们有自己NB
  • 圈圈教你玩转USB第三版 光盘资料

    下载官网 http service buaapress com cn mzs file detail id 2199 key b2fec916cc9fa216abe6fc836e3f7e35
  • Swift中的‘open‘关键字是什么?

    本文翻译自 What is the open keyword in Swift The ObjectiveC swift file from the standard library contains the following few l
  • C语言基础代码(1)

    C语言是计算机及其相关专业学生必修的语言 我在大一下学期就已经学习了 前段时间 我又将谭浩强编写的C程序设计 也就是我C语言学习的课本看了一遍 温故而知新 受益良多 于是就萌发了一个想法 想将C语言学习当中一些基础的代码做一个总结归纳 在总
  • 牛客专项练习之设计模式

    开头先一句水平有限 仅供参考 有错误可以提醒我改一下 感谢 1 如果需要一个语言解释执行 并且可以将语言中的句子表示为一个抽象语法树的时候 对效率要求不高的情况下 应该选择何种设计模式 题目中的解释二字就告知选项 解释器模式 给定语言 定义
  • Nginx额外篇之一些错误解决办法

    错误1 配置了Nginx 但是打开页面是乱码 解决办法如下 在你个人的sever端添加如下2行 default type text html 设置内容输出内容型为 html htm shtml 三种类型 charset utf 8 设置字符
  • java导出word,红色的单元格背景色显示为黑色

    之前有这个问题 当我用正版office看导出word文件的时候 单元格背景是红色 当我换wps看导出的文件的时候 单元格背景是黑色的 离谱 所以我当初为了省事直接和客户说 请使用正版office 狗头 然后今天闲着没事情 再看ftl模板的时
  • 001问

    偶然间 我的好朋友问起我这个问题 我还真没有好好思考过这个问题 我查了Go语言圣经 知名博客 以及Go中文文档 发现都没有阐述这个问题 后来找来找去也只有下面的解释 for的初始化语句不能是任何类型的语句 必须是 简单语句 短变量声明 就是
  • Th5.6:智能指针(unique_ptr)之详述1

    本小节学习的知识点分别是智能指针 unique ptr 之详述 常用操作 今天总结的知识分为以下2个大点 1 unique ptr概述 常用操作 1 1 常规初始化 unique ptr和new配合 1 2 make unique 函数 2
  • 转:idea中language level设置

    一 idea中项目的language level的含义 language level指的是编译项目代码所用的jdk版本 那么 从这个定义出发会有两个小问题 第一 如果project sdk是jdk8 那么language level应该是多
  • 在顺序表中插入元素_C语言 一看就懂

    一看就懂的数据结构带注释 数据结构 在顺序表中插入元素 C语言版 头文件和定义结构体 include
  • ECOLOGY 9.0 新增SAP批量选择功能并将数据填充到明细表

    需求来了 在明细表一的抬头处增加SAP多选功能 如下图 1 打开明细表一 2 打开集成按钮 3 右键后 点击批量编辑 4 点击明细表1后 继续点击多选浏览按钮配置SAP接口 5 配置SAP接口函数 6 字段配置完了后 勾选要显示的字段 不然
  • Qt 判断信号是否绑定了

    本文介绍Qt的信号是否被连接了和信号槽之间的参数是否一致的判断方法 1 判断信号是否正确连接 通过判断connect的返回值是否为true 1 bool ok connect this SIGNAL signal1 this SLOT sl
  • 如何选择云上业务的安全防护产品?

    古人云 没有绝对的安全 只有相对的安全 云计算作为业务的部署方式 已经逐渐被人们所接受 云模式也逐渐成为很多企业的重要选择 如何保证云上业务系统的安全 已经成为每一个上云企业必须要面对的问题 作为一个对安全技术不是那么专业的运维管理人员 如
  • 图片识别工具Tesseract介绍和python搭配使用

    Tesseract介绍和Python的搭配使用 一 Tesseract介绍 下载指南 1 了解Tesseract工具 2 下载地址 3 请注意 二 环境搭建 2 1 版本3 05安装 2 2 最新版本安装 2 3 环境搭建 2 4 举个栗子