想用Python做OCR?看看这篇文章

OCR是Optical Character Recognition的缩写,中文名为光学字符识别。它是一种通过计算机技术对图像或扫描文档中的文字进行识别和理解的过程。OCR技术可以将图像中的文字转换为可编辑、可搜索的文本,使得计算机能够理解和处理这些文字信息。

OCR技术通常包括以下几个步骤:

  1. 文字检测:检测图像中的文字区域,确定文字的位置和边界框。
  2. 文字识别:识别文字内容,将图像中的文字转换为计算机可处理的文本数据。
  3. 文字校正:对识别出的文字进行校正,以提高识别准确性。
  4. 格式化输出:将识别的文本信息进行格式化,使其符合特定的需求,例如保存为文本文件或数据库记录。

目前在Python领域比较流行的OCR库有多个,其中一些主要的OCR库包括Tesseract-OCR、EasyOCR、Pillow、Pytesseract、PaddleOCR等。下面我将对这几个库进行简要的比较,并列出它们的优缺点,以便您选择适合您需求的OCR库:

  1. Tesseract-OCR

    • 优点:
      • Google开源的OCR引擎,支持多种语言。
      • 识别准确率较高。
    • 缺点:
      • 对于非常复杂的图像和排版不规范的文本处理效果可能不佳。
  2. EasyOCR

    • 优点:
      • 基于PyTorch实现,支持多种语言。
      • 非常易于使用,具有良好的用户体验。
    • 缺点:
      • 在某些特定场景下识别效果可能不如其他库。
  3. Pillow + Pytesseract

    • 优点:
      • Pillow用于图像处理,Pytesseract用于OCR识别,灵活性高。
      • 可以方便地与其他Python库集成使用。
    • 缺点:
      • 对于复杂的文本和特定排版的处理效果可能有限。
  4. PaddleOCR

    • 优点:
      • 基于PaddlePaddle深度学习框架,支持多种语言。
      • 提供了多个预训练模型,适用于不同场景。
      • 在中文文字识别上效果较好。
    • 缺点:
      • 部署和使用相对复杂一些。

 

百度PaddleOCR是基于百度开源深度学习框架PaddlePaddle开发的一款端到端的文字识别工具库,旨在提供高效、准确的OCR(Optical Character Recognition)解决方案。PaddleOCR支持多种文字识别任务,包括文本检测、文本识别、关键点检测等,适用于各种场景,如证件识别、车牌识别、图像字幕生成等。

以下是关于百度PaddleOCR的详细介绍:

  1. 特点和优势

    • 多模型支持:PaddleOCR提供了多种预训练模型,覆盖了不同场景和需求,用户可以选择适合自己应用场景的模型。
    • 多语言支持:PaddleOCR支持多种语言的文字识别,包括英文、中文等,适用范围广泛。
    • 高性能:基于PaddlePaddle深度学习框架,PaddleOCR具有高效的推理速度和准确的识别能力。
    • 易用性:提供了简单易用的API接口,方便快速部署和集成到自己的应用中。
    • 持续更新:PaddleOCR团队会持续更新和优化模型,以提供更好的文字识别效果和体验。
  2. 主要功能模块

    • 文本检测:用于检测图像中的文本区域,确定文字的位置和边界框。
    • 文本识别:对检测到的文本区域进行文字识别,将图像中的文字转换为计算机可处理的文本数据。
    • 关键点检测:用于检测文本中的关键点,如文本行的起始点和结束点等。
  3. 使用场景

    • 证件识别:身份证、驾驶证等证件信息的识别。
    • 车牌识别:车牌号码的自动识别。
    • 图像字幕生成:图像中的文字生成字幕。
    • 文档数字化:扫描文档的文字转化为可编辑的文本。
  4. 部署和使用

    • PaddleOCR提供了详细的文档和示例代码,用户可以根据文档进行部署和使用。
    • 支持CPU和GPU环境下的部署,可以满足不同设备和需求。

 第一部分:环境搭建

1. 安装Python和PaddlePaddle

首先,确保你已经安装了Python,并且安装了pip包管理工具。接下来,我们将安装PaddlePaddle,PaddleOCR的基础依赖。

 pip install paddlepaddle

2. 安装PaddleOCR

安装PaddleOCR可以通过以下命令来完成:

pip install paddleocr

3. 下载预训练模型

PaddleOCR提供了多个预训练模型,可以根据需求选择合适的模型进行下载。可以通过以下方式来下载预训练模型:

from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")

 以上代码会自动下载中文文字识别的预训练模型。

第二部分:使用PaddleOCR进行文字识别

1. 图片文字识别

下面的示例展示了如何使用PaddleOCR对图片中的文字进行识别:

import rich
from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang="ch")

img_path = r'C:\Users\Administrator\Desktop\airTestDemo\Snapshot\OCR\img_5.png'
result = ocr.ocr(img_path, cls=True)

rich.print(result)

效果如下: 

 

2. 实际项目示例

现在,让我们结合一个实际项目,假设我们需要从一张包含文字的图片中提取出特定信息并打印。

原图:

代码如下: 

from paddleocr import PaddleOCR
import cv2

# 初始化PaddleOCR
ocr = PaddleOCR()

# 读取待识别的图像
img_path = r'C:\Users\Administrator\Desktop\airTestDemo\Snapshot\OCR\img_5.png'
img = cv2.imread(img_path)

# 进行文字检测和识别
result = ocr.ocr(img, cls=True)

# 打印识别结果
for line in result:
    for word in line:
        print(word[1][0], end=' ')  # 打印识别的文字
    print()  # 换行

识别效果如下:

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【技术实操】银河高级服务器操作系统实例分享,达梦数据库服务器 oom 问题分析

1. 服务器环境以及配置 【 机型】 处理器: HUAWEIKunpeng 920 5220 内存: 400518528 kB 主板型号: Chaoqiang K620 series 整机类型/架构: ARM BIOS 版本: KL4.41.028.TF.220224.R 固件版本: KL4.41…

关于C++的IO流简单总结

基础IO流 C的IO以面向对象的形式实现, 同时兼容了C语言面向过程的IO方式 C 标准库提供了四个基本流对象: cin:用于从标准输入(通常是键盘)读取数据。 cout:用于向标准输出(通常是控制台)写入…

IGS 天线文件内容解读

文章目录 Part.I IntroductionChap.I 预备知识 Part.II 文件的下载Chap.I 下载地址Chap.II 文件类型 Part.III 文件内容解读Chap.I 文件头Chap.II 数据块说明Chap.III 数据块示例 Reference Part.I Introduction 本文将对 IGS 发布的天线文件 *.atx 进行一个简要的解读。 Chap…

QTreeWidget 详解

QTreeWidget 详解 QTreeWidget 是 PyQt5 框架中的一个重要部件,它提供了树形结构的视图,可以用于显示层级数据。以下是 QTreeWidget 的详细讲解,包括基本用法、主要方法和属性以及如何与其他组件进行交互。 基本用法 导入模块 要使用 QTree…

QListWidget详解

QListWidget详解 QListWidget 是 PyQt5 中一个方便的部件,用于创建和管理列表。它继承自 QListView,并提供了一些高级功能,使得添加和管理列表项更加简单。以下是 QListWidget 的详解,包括基本用法、主要方法和属性以及如何与其他…

安装PyTorch详细步骤

💥注意事项: CPU版和GPU版选一个进行安装即可 如果有Nvidia显卡,则安装cuda版本的PyTorch,如没有nvidia显卡,则安装cpu版。 目前常见的深度学习框架有很多,最出名的是:PyTorch(faceb…

hypack如何采集多波束数据?(下)

多波束测量模块 1)记录多波束和辅助传感器的数据; 2)显示实时改正后的数据和数据质量信息。 ​编辑​ 测量准备 1)设置大地测量参数和硬件设置; 2)计划测线 计划测线是一定间距的平行线,…

DuGa-DIT论文翻译

Dual Gated Graph Attention Networks with Dynamic Iterative Training for Cross-Lingual Entity Alignment 双门控图注意力网络与跨语言实体对齐的动态迭代训练 Abstract 近年来,跨语言实体对齐引起了相当大的关注。过去使用传统方法来匹配实体的研究都有一个…

传输大咖26|想找可替代FTP升级的国产信创软件?这个一定要看

​在这个信息技术飞速发展的时代,传统的文件传输协议FTP已经逐渐显露出它的局限性。特别是在安全性、传输效率和可扩展性方面,FTP似乎已经无法满足企业日益增长的需求。因此,寻找一款能够替代FTP的国产信创软件,成为了众多企业的迫…

8个Web组件库强烈推荐,大厂设计师的秘密武器

有TDesign、Arco Design、Ant Design、Material 随着Design等优秀web组件库的发布,设计师可能会认为大厂商之间的web组件库差别不大。其实大厂商的产品线很多,业务复杂。设计系统是对以往项目经验的深刻沉淀,可以支撑业务逻辑,保证…

如何本地 Debug React 源码

日常开发过程中,有时 debug react 源代码进行问题排查。一种方案是直接把通过 html 引入进来,另外一种是编译并通过 yarn 链接到项目中,本地将介绍如何通过这两种方法进行代码 Debug。 页面引入源代码方式 这种方式比较简单,直接…

【项目】教你手把手完成博客系统(三)显示用户信息 | 实现退出登录 | 实现发布博客

文章目录 教你手把手完成博客系统(三)7.实现显示用户信息1.约定前后端交互接口2.前端通过ajax发起请求3.服务器处理请求 8.实现退出登录1.约定前后端的接口2.前端发起请求3.服务器处理请求 9.实现发布博客1.约定前后端的交互接口2.前端构造请求3.服务器处…

前端面试问题:子组件的某一个方法调用执行逻辑由父组件的属性状态变化来决定

面试官:请你讲讲你在该项目中遇到的问题是什么?你怎么解决这个问题? 答:我的回答:该项目的实现过程中我确实遇到了问题:【我会给大家整理回答思路和角度,那那么遇到这样的问题也可借鉴这种思路…

RAG架构的数据准备流程

虽然现成的大型语言模型 (LLM) 功能强大,但企业发现,根据其专有数据定制 LLM 可以释放更大的潜力。检索增强生成 (RAG) 已成为这种定制的主要方法之一。RAG 模型将大型语言模型强大的语言理解能力与检索组件相结合,使其能够从外部数据源收集相…

[Redis]String类型

基本命令 set命令 将 string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖,无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。 set key value [expiration EX seconds|PX milliseconds] [NX|XX] 选项[EX|PX] EX seconds⸺使用…

官宣!马斯克的xAI获60亿美元融资,估值240亿美元

5月27日晚,马斯克旗下的大模型平台xAI在官网宣布获得60亿美元B轮融资,估值240亿美元。本次主要投资者包括Valor Equity Partners、红杉资本、国王控股、沙特王子-Bin Talal、Vy Capital等。 这也是大模型赛道史上最高单笔融资之一,超过Anthr…

安全基础二

一、插件漏洞 统计使用了哪些插件这些插件有版本更新嘛检测这些插件是否存在已知漏洞 二、权限提升和持久化 SSRF(Server-Side Request Forgery,服务器端请求伪造) 想象一下,你是一个公司的内部员工(服务器&#x…

主副坐标轴作图(即双坐标轴)

主副坐标轴显示: import numpy as np from matplotlib import pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus] False xnp.arange(0.1,10,0.01) data1np.exp(x) data2np.log(x) fig,ax1plt.subplots() #subplots一定要带s…

linux安装mysql后,配置mysql,并连接navicate软件

Xshell连接登陆服务器 输入全局命令 mysql -u root -p 回车后,输入密码,不显示输入的密码 注意mysql服务状态,是否运行等 修改配置文件my.cnf,这里没找到就找my.ini,指定有一个是对的 find / -name my.cnf 接下…

6岁开始学习打字,10岁学懂文字编程

​你们有没有想过打字速度会影响Coding 编程能力? 疫情期间,全国中小学均不定期停止面授课程,改为网上教学。顷刻之间,电脑、智能手机等即时通讯软件成为每日学习的「良师益友」,常伴左右。 同时,学生也由…