【老保姆教程】:Tesseract-OCR图片文字识别

news2024/11/21 2:35:20

文章目录

  • 🌟介绍一波
  • 🌟小安装
  • 🌟配置环境变量
    • ⭐️tesseract-ocr配置
    • ⭐️tessdata语言配置
    • ⭐️检测环境变量是否安装成功
  • 🌟语言包的配置使用
  • 🌟CMD命令框中进行图片识别操作
    • ⭐️举例一:识别数字
    • ⭐️举例二:识别文字
  • 🌟pycharm中进行图片识别操作
    • ⭐️举例一:识别文字
  • 🌟唠唠问题

🌟介绍一波


Tesseract-OCR 是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎。与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。
(别问我咋知道,百度一下,你就知道😛)

🌟小安装


  • 安装Tesseract-OCR(64位的安装包链接)
    tesseract-ocr-setup-4.00.00dev.exe
  • tesseract各种语言集合包
    tesseract各种语言集合包

🌟配置环境变量


⭐️tesseract-ocr配置

  1. 下载 tesseract-ocr-setup-4.00.00dev.exe 完成后,对tesseract-ocr进行安装,找到tesseract.exe所在的文件路径,复制该文件所在的路径。
    在这里插入图片描述

  2. 打开环境变量:打开控制面板——>输入“环境”,回车——>点击“编辑系统环境变量”——>点击“环境变量”。
    在这里插入图片描述
    在这里插入图片描述
    3、在用户变量系统变量Path中分别粘贴之前复制的路径,最后一直点击“确定”即可。
    在这里插入图片描述
    在这里插入图片描述

⭐️tessdata语言配置

  1. 在Tesseract-OCR的文件夹中找到tessdata文件夹并进入(此文件夹中包含的是各种语言包,提供识别功能)并复制此路径。
    在这里插入图片描述
  2. 打开环境变量(以上已有,不再赘述),在系统变量中点击新建,添加一个系统变量,变量名为TESSDATA_PREFIX,变量值为tessdata文件夹的路径
    在这里插入图片描述

⭐️检测环境变量是否安装成功

👉打开cmd命令框并输入tesseract后回车,如果出现以下内容则表示环境变量安装成功。
在这里插入图片描述

🌟语言包的配置使用


下载好tessdata各语言集合包并解压后点击进入文件,即可看见里面有很多语言包(chi_sim是中文识别包,equ是数学公式包,eng是英文包 ),可将对应的语言包复制并粘贴到Tesseract-OCR的文件夹下的tessdata文件夹中。
在这里插入图片描述

🌟CMD命令框中进行图片识别操作


  • 在CMD中进入所要识别图片的路径。
    在这里插入图片描述

在这里插入图片描述

⭐️举例一:识别数字

命令(举例):tesseract 1.png out_1 -1 eng
1.png:图片名称
out_1:识别后形成的文本文件名称
-l:不是数字1,而是字母L的小写
eng:识别的是数字或英文

在这里插入图片描述

  • 这时则在图片路径下生成一个名为out_1的文本文件,文件中写入的是识别的内容。
    在这里插入图片描述

⭐️举例二:识别文字

在这里插入图片描述
在这里插入图片描述

🌟pycharm中进行图片识别操作


  • 需要下载的模块:
    pip install PIL
    pip install pytesseract

⭐️举例一:识别文字

from PIL import Image
from pytesseract import pytesseract

a = pytesseract.image_to_string(Image.open('F:/识别/2.png'), lang='chi_sim')
print(a)

在这里插入图片描述

🌟唠唠问题


大家可以发现👀,使用Tesseract-OCR进行图片文字识别时会出现识别错误的情况,也就是识别精度较低。当我们想识别文字较多,内容较为复杂的图片时,就很难识别出来了,这可咋办?
莫慌莫慌,想要知道如何解决,请听下回分解😜

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

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

相关文章

@PostConstruct(重点,初始化加载)和@PreDestroy 注解

PostConstruct和PreDestroy 注解 PostConstruct和PreDestroy都是属于Bean生命周期的一部分; PostConstruct:在bean创建完成并且属性赋值完成之后来执行初始化方法,常用于:项目启动完成后的初始化操作,比如不经常变的Redis缓存Pr…

二、LVS的安装部署

LVS的安装部署LVS的安装部署一、LVS的安装1、yum安装2、源码包安装二、ipvsadm命令详解LVS 相关软件ipvsadm 命令ipvsadm 工具用法:防火墙标记LVS 持久连接三、部署LVS NAT1、LVS NAT模式注意事项2、实验环境3、部署RS1和RS2的nginx4、将RS1和RS2的网关配置为DR的内…

maven私服

分模块开发时,被引用的模块不可能拷来拷去,应该放在单位内部的某一个服务器上,这就是私服。这里使用nexus作为私服软件。 Nexus ● Nexus是Sonatype公司的一款maven私服产品 ●下载地址 Nexus安装、启动与配置 ● 解压即安装 ● 修改基…

我国登山鞋行业参与者越发广泛带来广阔潜在需求 女性市场值得期待

登山鞋属于户外运动鞋,是专门为爬山和旅行而设计制造的鞋子,具有防水性、防滑性、足部保护功能、耐用性等功能,其中防水性是现代登山鞋的首要功能。 资料来源:中国登山鞋行业发展趋势研究与未来投资分析报告(2022-2029…

StarRocks Join Reorder 源码解析

导读:欢迎来到 StarRocks 源码解析系列文章,我们将为你全方位揭晓 StarRocks 背后的技术原理和实践细节,助你逐步了解这款明星开源数据库产品。 本期 StarRocks 技术内幕将介绍 Join Reorder 算法如何找到最优解的原理。 背景介绍 多表 Join…

vue之watchEffect

在Options API中,我们可以通过watch选项来侦听data或者props的数据变化,当数据变化时执行某一些操作。 在Composition API中,我们可以使用watchEffect和watch来完成响应式数据的侦听。 watchEffect用于自动收集响应式数据的依赖,需…

Jmeter实现websocket协议接口测试

一.为了方便使用,首先将jmeter设置成中文,有两种方法: 1.在Jmeter界面进行设置,Options ->Choose Language ->Chinese(Simplified),这种方法在关闭jmeter重启后又会恢复成默认的英文,如果…

学习Python编程好找工作吗?

说起编程语言,不少人都会推荐学习Python,但很多人对Python不太了解,所以比较好奇“学习Python编程是否好找工作”,关于这个问题,小编通过下文为大家详细解答一下。 从市场情况来讲,Python职位比较多&…

阿里内部进阶学习SpringBoot+Vue全栈开发实战文档

前言 Spring 作为一个轻量级的容器,在JavaEE开发中得到了广泛的应用,但是Spring 的配置烦琐臃肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了使开发者能够快速上手Spring&#xff0…

105.(leaflet之家)leaflet态势标绘-聚集地修改

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html>…

Python函数总结

在Python中&#xff0c;函数是一个带有名字的代码块&#xff0c;可以被反复调用。函数可以帮助你组织和重用代码&#xff0c;使你的程序更整洁&#xff0c;更易于维护。本文将会深入探索Python的秘密 目录 定义函数 自定义函数 内置函数 函数式方程 高阶函数 函数标注 …

Linux5.4.0内存分配器核心代码解析

理论 伙伴系统 核心代码解析 __rmqueue_smallest函数 在zone的free_list上进行搜索,找到符合migratetype的、大小为order的空闲页面块 static __always_inline struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,int migratetype

【TypeScript】常用类型声明详情概述

目录 TypeScript常用类型 类型注解 TS类型概述 原始类型 数组类型 对象类型 函数类型 类型别名 接口 元组 字面量类型 枚举 any类型 typeof操作符 类型推论 类型断言 TypeScript常用类型 TypeScript是JS的超集&#xff0c;TS提供了JS的所有功能&#xff0c;并额…

【Linux】第五部分 网络配置

【Linux】第五部分 网络配置 文章目录【Linux】第五部分 网络配置5. 网络配置5.1 对vmware网络连接的三种模式探讨&#xff0c;Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;Bridged&a…

车企数据治理的障碍是什么?如何解决?

​在全行业数字化转型的浪潮下&#xff0c;底层技术的发展与行业之间的碰撞&#xff0c;正在成为变革的巨大力量&#xff0c;汽车行业也是如此。汽车行业的“数字化转型”是利用新的技术驱动行业的创新与发展&#xff0c;改善用户体验、重构商业模式、降本增效&#xff0c;而这…

跟着pink老师学习第二天的学习总结(1)

1.CSS初始化 <style>/* 清除浏览器默认格式 */*{margin:0;padding:0}/* 斜体文字不倾斜 */em,i{font-style:normal}/* 去掉li的小圆点 */li{list-style:none}img{/* 照顾低版本浏览器,如果图片外面包含链接,会出现边框 */border:0;/* 取消图片底部与边框产生的缝隙 */ve…

element plus + vue3表单第一次数据未清空的bug问题解决

使用框架&#xff1a;element Plus vue3 场景描述&#xff1a; 场景一&#xff1a; 表单的添加和修改功能&#xff0c;公用同一个弹框&#xff0c;点击修改后&#xff0c;点击添加表单显示的是上次修改的数据。 场景二&#xff1a; 点击修改&#xff0c;数据回显到表单&…

谁能主宰智能驾驶赛道?「芯片+感知」是第一主角

得「感知」者&#xff0c;得天下。 这句话依然适用于当今的自动驾驶赛道&#xff0c;实际上从Mobileye开始&#xff0c;到特斯拉&#xff0c;都是如此。尤其是智能化变革的快速演进&#xff0c;对于下游车企来说&#xff0c;具备规控的自研能力&#xff08;更多考虑到系统的体验…

【栈与队列】——栈的实现及应用

目录概念栈的实现初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数判断栈是否为空栈的销毁栈的应用概念 栈 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底栈中的数据元素遵…

python+pyqt5+mysql设计图书管理系统(5)- 普通用户图书管理界面

前面已经实现了图书管理系统中的一部分功能,今天就在完整最后一点内容,使用pyqt5设计出detail_stu.ui文档,然后使用PyUIC转为detail_stu.py文档,就得到了设计好的界面文档的代码。然后再逐一实现界面上对应的功能。 设计的界面如下: 1.菜单栏选项功能实现 菜单栏-登录选…