当前位置: 首页 > news >正文

100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

文章目录

  • 专栏导读
  • 1. OCR技术介绍
  • 2. 模块介绍
  • 3. 模块安装
  • 4. 代码实战
    • 4.1 英文图片测试
    • 4.2 数字图片测试
    • 4.3 中文图片识别
  • 书籍分享

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

1. OCR技术介绍

OCR,即光学字符识别(Optical Character Recognition),是一种将印刷体字符转化为计算机可读文字的技术。OCR技术可以将纸质文档、扫描文档、照片等转化为可编辑的电子文件,方便用户进行编辑、存储和共享。

OCR技术的应用范围非常广泛。例如,银行和保险公司可以使用OCR技术来处理各种表格和文件,包括支票、发票、合同等,从而提高办公效率。医院可以使用OCR技术来处理病历、处方和医学报告,从而提高医疗质量和效率。政府机构可以使用OCR技术来处理各种表格和文件,例如税务申报表、选民登记表等,从而提高政府服务的效率和质量。

OCR技术的原理是利用光学扫描仪将纸质文档转化为数字图像,然后通过图像处理算法将图像中的字符识别出来,并转化为计算机可读的文字。OCR技术的核心是字符识别算法,这个算法需要考虑到各种字体、字号、字距、倾斜度、噪声等因素。

OCR技术的发展历史可以追溯到20世纪50年代,当时的OCR技术只能处理单一字体、字号、字距的文本。随着计算机技术的不断发展,OCR技术也不断进步,现在的OCR技术能够处理各种字体、字号、字距、倾斜度、噪声等复杂条件下的文本,并且具备高精度和高速度的特点。

总之,OCR技术是一种非常实用的技术,可以帮助用户将纸质文档转化为电子文件,从而提高办公效率和工作质量。随着计算机技术的不断进步,OCR技术也将不断发展,为用户提供更加高效和便捷的服务。

2. 模块介绍

Tesseract OCR(Optical Character Recognition)是一个免费的开源OCR引擎,由Google开发和维护。它能够识别图像中的文本,并将其转换为可编辑和可搜索的文本格式。Tesseract支持超过100种语言的文本识别,并且具有高度的准确性和可扩展性。

3. 模块安装


1、安装Tesseract、Tesseract、Pillow模块,可以使用以下命令:

pip install pytesseract
pip install pillow
pip install tesseract-ocr # 如果这个安装报错就用下面的手动安装方法

2、从网上找到相应的‘Tesseract-OCR’下载安装(自行寻找对应版本):https://digi.bib.uni-mannheim.de/tesseract/
在这里插入图片描述

3、无脑默认安装即可

4、安装后的默认文件路径为(这里使用的是Windows版本)C:\Program Files\Tesseract-OCR\

在这里插入图片描述

4. 代码实战

4.1 英文图片测试

1. 测试图片准备:

在这里插入图片描述

2、修改下面的Tesseract-OCR的安装路径和图片路径:

import cv2
import pytesseract# 1. 找到Tesseract-OCR的安装路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'# 2. 图片的路径(注意:图片路径不能有中文
img = cv2.imread(r'English.png')# 3. 对图片进行灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 4. 提取字符串
text = pytesseract.image_to_string(gray)# 5. 打印字符串
print(text)

3、运行结果,识别成功:
在这里插入图片描述

4.2 数字图片测试

  1. 测试图片准备:

在这里插入图片描述

2、修改下面的Tesseract-OCR的安装路径和图片路径:

import cv2
import pytesseract# 1. 找到Tesseract-OCR的安装路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'# 2. 图片的路径(注意:图片路径不能有中文
img = cv2.imread(r'number.png')# 3. 对图片进行灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 4. 提取字符串
text = pytesseract.image_to_string(gray)# 5. 打印字符串
print(text)

3、运行结果,识别成功:

在这里插入图片描述

4.3 中文图片识别

注意:上面的代码不能直接识别中文,我们需要下载中文语言包

1、下载下面的4个中文语言包文件,复制到Tesseract-OCR安装目录tessdata文件夹里:https://gitcode.com/tesseract-ocr/tessdata/overview

chi_sim.traineddata
chi_sim_vert.traineddata
chi_tra.traineddata
chi_tra_vert.traineddata

在这里插入图片描述

网速慢的小伙伴们,博主这里为大家下载好了,搜索公众号:袁袁袁袁满,回复:tessdata,即可:

在这里插入图片描述

2、将下载好的中文语言包复制在Tesseract-ocr安装路径的tessdata文件夹里:

在这里插入图片描述

3、准备图片:

在这里插入图片描述

4、与之前代码区别在于设置了中文语言包:

import cv2
import pytesseract# 1. 找到Tesseract-OCR的安装路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'# 2. 图片的路径(注意:图片路径不能有中文
img = cv2.imread(r'Chinese.png')# 3. 对图片进行灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 4. 提取字符串,并设置为中文
lang = 'chi_sim'
text = pytesseract.image_to_string(gray,lang)# 5. 打印字符串
print(text)

5、运行结果,提取成功:
在这里插入图片描述

书籍分享

《Web前端开发全程实战》
在这里插入图片描述

《Web前端开发全程实战——HTML5+CSS3+JavaScript+jQuery+Bootstrap》从初学者角度出发,结合大量实例讲解了如何使用HTML5、CSS3、JavaScript、jQuery、Ajax、Boostrap、Vue、PHP 等基本技术搭建Web 前端,力求向读者提供一套极简的Web 前端一站式高效学习方案。全书共28 章,内容包括HTML5基础、设计HTML5 文档结构、设计HTML5 文本、设计HTML5 图像和多媒体、设计列表和超链接、设计表格和表单、CSS3 基础、设计文本样式、设计特效和动画样式、CSS 页面布局、JavaScript 基础、处理字符串、使用数组、使用函数、使用对象、jQuery 基础、文档操作、事件处理、使用Ajax、CSS 样式操作、jQuery 动画、Bootstrap基础、CSS 组件、JavaScript 插件、使用Vue、PHP 基础、使用PHP 与网页交互、使用PDO 操作数据库、项目实战。书中所有知识点均结合具体实例展开讲解,代码注释详尽,可使读者轻松掌握前端技术精髓,提升实际开发能力。

本书特色:30万+读者体验,畅销丛书新增精品;10年开发教学经验,一线讲师半生心血。

京东地址:https://item.jd.com/13512401.html

相关文章:

100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

文章目录 专栏导读1. OCR技术介绍2. 模块介绍3. 模块安装4. 代码实战4.1 英文图片测试4.2 数字图片测试4.3 中文图片识别 书籍分享 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准…...

Go七天实现RPC

0.前言 本文是学习自7天用Go从零实现RPC框架GeeRPC | 极客兔兔 在此基础上,加入自己的学习过程与理解。 1.RPC 框架 RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许调用不同进程空间的程序。RPC 的客户端和服务器可以…...

Elasticsearch:和 LIamaIndex 的集成

LlamaIndex 是一个数据框架,供 LLM 应用程序摄取、构建和访问私有或特定领域的数据。 LlamaIndex 是开源的,可用于构建各种应用程序。 在 GitHub 上查看该项目。 安装 在 Docker 上设置 Elasticsearch 使用以下 docker 命令启动单节点 Elasticsearch 实…...

QT基础篇(14)QT操作office实例

1.QT操作office的基本方式 通过QT操作Office软件&#xff0c;可以使用Qt的QAxObject类来进行操作。下面是一个例子&#xff0c;展示了通过Qt操作Excel的基本方式&#xff1a; #include <QApplication> #include <QAxObject>int main(int argc, char *argv[]) {QA…...

重拾计网-第四弹 计算机网络性能指标

ps&#xff1a;本文章的图片内容来源都是来自于湖科大教书匠的视频&#xff0c;声明&#xff1a;仅供自己复习&#xff0c;里面加上了自己的理解 这里附上视频链接地址&#xff1a;1.5 计算机网络的性能指标&#xff08;1&#xff09;_哔哩哔哩_bilibili ​​​ 目录 &#x…...

【Vue】Vue 路由的配置及使用

目录捏 前言一、路由是什么&#xff1f;1.前端路由2.后端路由 二、路由配置1.安装路由2.配置路由 三、路由使用1.route 与 router2. 声明式导航3. 指定组件的呈现位置 四、嵌套路由&#xff08;多级路由&#xff09;五、路由重定向1.什么是路由重定向&#xff1f;2.设置 redire…...

网络安全事件分级指南

一、特别重大网络安全事件 符合下列情形之一的&#xff0c;为特别重大网络安全事件&#xff1a; 1.重要网络和信息系统遭受特别严重的系统损失&#xff0c;造成系统大面积瘫痪&#xff0c;丧失业务处理能力。 2.国家秘密信息、重要敏感信息、重要数据丢失或被窃取、篡改、假…...

uniapp组件库SwipeAction 滑动操作 使用方法

目录 #平台差异说明 #基本使用 #修改按钮样式 #点击事件 #API #Props #Event 该组件一般用于左滑唤出操作菜单的场景&#xff0c;用的最多的是左滑删除操作。 注意 如果把该组件通过v-for用于左滑删除的列表&#xff0c;请保证循环的:key是一个唯一值&#xff0c;可以…...

YARN节点故障的容错方案

YARN节点故障的容错方案 1. RM高可用1.1 选主和HA切换逻辑 2. NM高可用2.1 感知NM节点异常2.2 异常NM上的任务处理 4. 疑问和思考4,1 RM感知NM异常需要10min&#xff0c;对于app来说是否太长了&#xff1f; 5. 参考文档 本文主要探讨yarn集群的高可用容错方案和容错能力的探讨。…...

C++后端笔记

C后端笔记 资源整理一、高级语言程序设计1.1 进制1.2 程序结构基本知识1.3 数据类型ASCII码命名规则变量间的赋值浮点型变量的作用字符变量常变量 const运算符 二、高级语言程序设计&#xff08;荣&#xff09; 资源整理 C后端开发学习路线及推荐学习时间 C基础知识大全 C那…...

JavaEE中什么是Web容器?

Web容器&#xff08;也称为Servlet引擎&#xff09;是一个用于执行Java Servlet和JSP的服务器端环境。它负责管理和执行在其上运行的Web应用程序。 Tomcat是Web容器 Apache Tomcat 是一个流行的开源的Web容器&#xff0c;它实现了Java Servlet和JavaServer Pages&#xff08;…...

MySQL 8.0 架构 之错误日志文件(Error Log)(1)

文章目录 MySQL 8.0 架构 之错误日志文件&#xff08;Error Log&#xff09;&#xff08;1&#xff09;MySQL错误日志文件&#xff08;Error Log&#xff09;MySQL错误日志在哪里Window环境Linux环境 错误日志相关参数log_error_services 参考 【声明】文章仅供学习交流&#x…...

51单片机实验课一

实验任务一&#xff1a;实现控制8个发光管的亮&#xff08;灭&#xff09; #include <REGX52.H> void Delay1ms(unsigned int xms) //11.0592MHz {unsigned char i, j;while(xms){xms--;i 12;j 169;do{while (--j);} while (--i);} } void main() {while(1){P20;//八…...

【.NET Core】多线程之线程池(ThreadPool)详解(一)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09; 文章目录 【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;一、概述二、线程池的应用范围三、线程池特性3.1 线程池线程中的异常…...

圆的参数方程是如何推导的?

圆的参数方程是如何推导的? 1. 圆的三种参数表示2. 三角函数万能公式3. 回到圆的参数方程1. 圆的三种参数表示 已知圆的第一种参数方程为: x 2 + y 2 = r x^2+y^2=r x2+y2=r   圆的图像如下: 通过上图,不难理解,圆的参数方程还可以用三角函数表示,也就是第二种参数表…...

sqlmap使用教程(2)-连接目标

目录 连接目标 1.1 设置认证信息 1.2 配置代理 1.3 Tor匿名网络 1.4 检测WAF/IPS 1.5 调整连接选项 1.6 处理连接错误 连接目标 场景1&#xff1a;通过代理网络上网&#xff0c;需要进行相应配置才可以成功访问目标主机 场景2&#xff1a;目标网站需要进行身份认证后才…...

c++ http第一个服务

c http第一个服务 一、下载相关依赖&#xff1a;这是一个git开源项目 代码仓地址 二、演示代码&#xff0c;编译参数&#xff1a;g test.cpp -I/**** -lpthread #include <httplib.h> using namespace httplib;void wuhan(const Request &req, Response &res) …...

深入Android S (12.0) 探索Framework之输入子系统InputReader的流程

Framework层之输入系统 第一篇 深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动 第二篇 深入Android S (12.0) 探索Framework之输入子系统InputReader的流程 文章目录 Framework层之输入系统前言一、基础知识1、输入子系统2、INotify 与 Epoll2.1、INotify 机制…...

【cucumber】cluecumber-report-plugin生成测试报告

cluecumber为生成测试报告的第三方插件&#xff0c;可以生成html测报&#xff0c;该测报生成需以本地json测报的生成为基础。 所以需要在测试开始主文件标签CucumberOptions中&#xff0c;写入生成json报告。 2. pom xml文件中加入插件 <!-- 根据 cucumber json文件 美化测…...

华为欧拉操作系统结合内网穿透实现固定公网地址SSH远程连接

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系…...

AI 与大模型相关

一、 AI 与大模型相关 1.1 Agent&#xff08;智能体&#xff09; 定义&#xff1a;具备自主规划、工具调用、记忆管理、任务执行能力的 AI 实体&#xff0c;能主动完成复杂目标。 核心能力&#xff1a;拆解任务、调用 API / 工具、自主决策、持久记忆、后台执行。 区别&am…...

OpenClaw+GLM-4.7-Flash:智能读书笔记生成

OpenClawGLM-4.7-Flash&#xff1a;智能读书笔记生成 1. 为什么需要自动化读书笔记 作为一名技术从业者&#xff0c;我常年保持每周至少阅读两本专业书籍的习惯。但最困扰我的不是阅读本身&#xff0c;而是如何高效整理书中精华内容。过去我尝试过各种笔记工具&#xff0c;从…...

电动汽车工程师视角:碳化硅模块在电驱系统中的应用实战(含热管理设计)

碳化硅功率模块在电动汽车电驱系统中的工程实践 当一辆搭载碳化硅逆变器的电动汽车从静止加速到100km/h时&#xff0c;功率模块内部的温度变化可能超过100℃。这种极端工况正是第三代半导体材料大显身手的舞台。作为参与过多个量产项目的电驱系统工程师&#xff0c;我想分享一些…...

全基因组序列比对工具mVISTA的保姆级使用指南:从文件准备到结果解读

全基因组序列比对工具mVISTA的保姆级使用指南&#xff1a;从文件准备到结果解读 在基因组学研究领域&#xff0c;序列比对是揭示物种间进化关系、识别保守区域和功能元件的基础操作。mVISTA作为一款专门用于全基因组序列比对的在线工具&#xff0c;凭借其直观的可视化界面和强…...

这次终于选对了!盘点2026年圈粉无数的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。这是2026年最炸裂、实测能大幅提速的AI论文网站&#xff0c;覆盖选题、写作、查重、排版全流程&#xff0c;真正帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首选&#xff09; 这类工具…...

AutoSAR实战:NVRAM Manager配置避坑指南(附完整代码示例)

AutoSAR实战&#xff1a;NVRAM Manager配置避坑指南&#xff08;附完整代码示例&#xff09; 在汽车电子开发领域&#xff0c;AutoSAR框架的NVRAM Manager&#xff08;NvM&#xff09;模块是管理非易失性数据的关键组件。许多工程师在初次配置时容易陷入性能陷阱和功能误区&…...

RSA宣布与Microsoft扩大合作,进一步巩固公司在无密码身份安全领域的领导地位

创新合作开启安全、基于人工智能的员工身份验证新时代 RSA今日在RSAC 2026大会上宣布&#xff0c;将扩大对全新Microsoft 365 E7&#xff1a;The Frontier Suite解决方案的支持。这一新增支持结合了额外的无密码功能&#xff0c;在企业拥抱人工智能驱动的生产力未来之际&#…...

36 Python 时序和文本:中文文本处理入门:为什么要先做分词和停用词过滤?

中文文本处理入门&#xff1a;为什么要先做分词和停用词过滤&#xff1f; 刚接触文本分析时&#xff0c;很多人都会有一个疑问&#xff1a; 文本明明已经有内容了&#xff0c;为什么不能直接拿去做分类、聚类或者情感分析&#xff1f; 这个问题其实正好指向了文本挖掘里最基础、…...

基于Arduino与Mixly的心知天气实时监测系统开发指南

1. 项目概述与准备 最近在工作室捣鼓了一个特别实用的小项目——用Arduino和Mixly搭建的天气监测系统。这个系统能实时获取温度、湿度、空气质量等数据&#xff0c;特别适合放在阳台或者窗台。我最初做这个是因为家里老人总抱怨手机天气App看不懂&#xff0c;现在有了这个实体设…...

用ChatTTS打造你的专属AI语音助手:从音色定制到批量合成音频的完整工作流

用ChatTTS打造你的专属AI语音助手&#xff1a;从音色定制到批量合成音频的完整工作流 在内容创作领域&#xff0c;音频正成为越来越重要的媒介形式。无论是知识付费课程的讲解、播客节目的制作&#xff0c;还是智能设备的语音交互&#xff0c;一个稳定、个性化的语音合成系统都…...