当前位置: 首页 > 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是面向数字基础设施的操作系…...

乡村智慧民宿系统|提质增收!巨有科技打造乡村旅居新模式

乡村旅居、民宿康养已经成为乡村文旅主流消费趋势。但大量乡村民宿依旧处于散户经营状态&#xff0c;预定混乱、管控松散、对账困难、同质化严重。巨有科技贴合乡村民宿分散、小规模、本土化的特点&#xff0c;搭建智慧民宿管理系统&#xff0c;用数字化手段规范经营、优化体验…...

RocketMQ 源码解析——Controller 高可用切换架构

延伸阅读&#xff1a;&#x1f50d;「RocketMQ 中文社区」 持续更新源码解析/最佳实践&#xff0c;提供 RocketMQ 专家 AI 答疑服务 一、原理及核心概念浅述 1.1 核心架构 1.2 核心概念 controller&#xff1a;负责管理broker间的主备关系&#xff0c;可以挂在namesrv中&…...

PySOT单目标跟踪实战:从零搭建环境到模型部署的避坑指南(手把手教学,附代码)

1. 环境准备&#xff1a;从零搭建PySOT开发环境 第一次接触PySOT时&#xff0c;我花了整整两天时间折腾环境配置&#xff0c;踩遍了所有能踩的坑。为了让你们少走弯路&#xff0c;我把这些经验整理成可复现的步骤。首先需要明确的是&#xff0c;PySOT对系统环境有特定要求&…...

当EtherCAT遇上串口调试:在STM32F401RET6上如何兼顾实时通信与日志输出

当EtherCAT遇上串口调试&#xff1a;在STM32F401RET6上如何兼顾实时通信与日志输出 工业自动化领域对实时性要求极高&#xff0c;EtherCAT作为高性能工业以太网协议&#xff0c;其从站开发往往需要在资源受限的微控制器上实现。STM32F401RET6凭借其Cortex-M4内核和丰富的外设资…...

【亲测免费】 STM32F103CAN双机通信程序

STM32F103CAN双机通信程序 【下载地址】STM32F103CAN双机通信程序 本项目是专为嵌入式开发者设计的&#xff0c;特别是针对那些对STM32微控制器及CAN总线通信协议感兴趣的开发者。STM32F103系列芯片以其高性能、低功耗的特点广泛应用于工业控制、汽车电子等领域。此份资源集合了…...

【免费下载】 让您的无线网络更稳定:Realtek 8188GU 无线网卡驱动推荐

让您的无线网络更稳定&#xff1a;Realtek 8188GU 无线网卡驱动推荐 【下载地址】Realtek8188GU无线网卡驱动 本仓库提供适用于Windows系统的Realtek 8188GU无线网卡驱动程序。该驱动程序旨在帮助用户解决无线网卡无法正常工作的问题&#xff0c;确保您的设备能够稳定连接到无线…...

从像素到频域:基于可逆神经网络与小波变换的下一代图像隐写术

1. 为什么图像隐写需要从像素域转向频域&#xff1f; 传统图像隐写术大多直接在像素层面操作&#xff0c;比如通过微调RGB值的最低有效位&#xff08;LSB&#xff09;来嵌入信息。这种方法简单直接&#xff0c;但存在明显缺陷&#xff1a;人眼对像素级变化的敏感度其实很高&…...

第一章:项目概述与环境搭建

第一章&#xff1a;项目概述与环境搭建 本文将带你从零开始认识 MyFirstCompose 项目&#xff0c;了解其整体架构与技术选型。 1.1 项目简介 MyFirstCompose 是一个基于 Jetpack Compose 开发的入门级 Android 应用&#xff0c;采用 单 Activity MVVM Repository 架构模式。…...

Browser-Use 实战指南:让 AI 自己操控浏览器的 7 个实用场景

Browser-Use 实战指南&#xff1a;让 AI 自己操控浏览器的 7 个实用场景 你打开浏览器&#xff0c;搜索、填表、采集数据、截图、下载文件。这些每天重复的动作&#xff0c;能不能让 AI 替你干&#xff1f; Browser-Use 给了一个相当干脆的答案&#xff1a;把浏览器交给 AI&…...

终极指南:如何用XUnity自动翻译器让外语游戏秒变中文版

终极指南&#xff1a;如何用XUnity自动翻译器让外语游戏秒变中文版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而错过精彩的Unity游戏&#xff1f;XUnity.AutoTranslator正是为解…...