使用paddleocr实现图片文字智能提取

1 OCR介绍

OCR(Optical Character Recognition)即光学字符识别,是一种将不同类型的文档(如扫描的纸质文件、PDF文件或图像文件中的文本)转换成可编辑和可搜索的数据的技术。OCR技术能够识别和转换印刷或手写文字,广泛应用于数据录入、文档数字化和自动化处理领域。

OCR技术已经成为数字化时代不可或缺的一部分,它极大地方便了文本的转换和处理,为各个行业的数字化转型做出了贡献。随着技术的不断进步,OCR的应用范围将进一步拓宽,为更多领域带来便利和效率的提升。

1.1 基本原理

OCR技术通常涉及以下几个步骤:

  • 图像获取:首先获取文档的图像,这可以通过扫描纸质文档或拍摄图片来实现。

  • 预处理:对图像进行预处理,以提高识别的准确性。这包括去噪、调整对比度、校正扭曲、二值化等。

  • 文本检测与分割:在预处理后的图像中检测文本区域,并将其分割为行、单词或字符。

  • 字符识别:利用模式识别技术,识别分割出的字符或单词。

  • 后处理:将识别结果进行校正和格式化,例如修正拼写错误、保持文本的结构和格式等。

1.2 技术发展

  • 早期技术:早期的OCR系统依赖于简单的模板匹配技术,只能处理特定字体和格式。

  • 进阶技术:随着机器学习和人工智能的发展,OCR技术引入了更复杂的算法,如神经网络,大大提高了识别的准确率和灵活性。

  • 深度学习:最近,深度学习在OCR领域的应用取得了显著的进步,特别是在处理复杂场景和手写文本方面。

1.3 应用领域

  1. 文档自动化处理:在办公自动化和文档管理系统中,OCR被用于快速输入和处理纸质文档。

  2. 银行和金融:银行使用OCR技术处理支票和其他金融文件。

  3. 法律和医疗领域:OCR有助于快速转换和管理大量的法律和医疗记录。

  4. 教育和研究:在教育和学术研究中,OCR可用于数字化历史文档和图书。

  5. 无障碍服务:OCR技术有助于为视觉障碍人士提供无障碍阅读服务。

1.4 挑战与限制

  • 识别准确率:虽然现代OCR技术已经很先进,但仍然可能在复杂的布局或低质量图像中遇到识别准确性的问题。

  • 语言和字体多样性:对于一些较少使用的语言或特殊的字体,OCR软件可能难以准确识别。

  • 手写文本识别:手写文本的变化性和复杂性使得其识别难度较高。

1.5 未来发展方向

  • 技术改进:不断改进OCR技术,提高对复杂文本和图像的处理能力。

  • 深度学习的应用:利用深度学习模型进一步提升识别准确率和速度。

  • 多语种支持:增强对多种语言和方言的支持能力。

  • 集成与应用拓展:将OCR技术与其他技术结合,如自然语言处理(NLP),扩展到更多应用场景。

2 paddleocr介绍

PaddleOCR是由百度开发的一款开源光学字符识别(OCR)工具,基于PaddlePaddle深度学习框架。它专注于提供轻量级、灵活且高效的OCR解决方案,旨在帮助开发者和研究人员在各种应用场景中快速部署OCR功能。PaddleOCR涵盖了OCR的全流程,包括文本检测、文本识别和文本校正等环节。

PaddleOCR是一个功能强大且灵活的OCR工具,它基于深度学习技术,提供了高效和准确的文字识别能力。它的轻量级设计、多语种支持和易用性使其适用于多种应用场景。作为一个开源项目,PaddleOCR持续发展和完善,是构建OCR应用的优秀选择。随着技术的不断进步和应用需求的日益增长,PaddleOCR将在自动化处理和智能识别领域发挥更大的作用。

项目地址:https://github.com/PaddlePaddle/PaddleOCR

体验地址:https://aistudio.baidu.com/application/detail/7658

2.1 核心特性

  • 多语种支持: PaddleOCR支持多种语言的识别,包括英文、中文、日文、韩文等,满足全球化应用的需求。

  • 高识别准确率: 基于先进的深度学习模型和算法,PaddleOCR在多个公开数据集上展现出优秀的识别性能。

  • 轻量化模型: 提供了轻量级模型,适用于移动设备和边缘计算场景,能够在资源受限的环境中快速运行。

  • 灵活易用: PaddleOCR提供了简洁的API和丰富的文档,使得开发者可以轻松集成OCR功能到自己的应用中。

  • 开源社区: 作为一个开源项目,PaddleOCR拥有活跃的社区支持,持续更新和改进。

2.2 技术组成

  • 文本检测: PaddleOCR使用深度学习模型来检测图像中的文本区域。它支持检测多种形状和布局的文本,如水平文本、倾斜文本和弯曲文本。

  • 文本识别: 在检测出文本区域后,PaddleOCR使用文本识别模型来识别这些区域中的文字内容。

  • 文本校正: 对于检测或识别过程中的错误,PaddleOCR提供了文本校正功能,以提高最终识别结果的准确性。

2.3 应用场景

  • 文件数字化: PaddleOCR可用于将纸质文件或PDF文档转换为可编辑的数字格式。

  • 身份验证: 在身份验证和KYC(了解你的客户)流程中,PaddleOCR可以用来识别身份证件上的信息。

  • 自动化办公: 在自动化办公系统中,PaddleOCR可以用于自动处理和分析文档中的文字。

  • 智能交通: 在智能交通系统中,PaddleOCR可以用于车牌识别和交通标志识别。

  • 零售和商业分析: PaddleOCR可以应用于零售场景,用于识别收据、发票和产品标签上的信息。

2.4 性能优化和部署

  • 模型优化: PaddleOCR针对不同的应用场景提供了多种优化后的模型,以满足性能和资源消耗之间的平衡。

  • 跨平台部署: PaddleOCR支持在多种平台上部署,包括服务器、云平台、移动设备和IoT设备。

  • 容器化和云服务: PaddleOCR支持容器化部署,也可以作为云服务提供OCR能力。

2.5 社区和支持

  • 开源协作: 作为一个开源项目,PaddleOCR鼓励社区成员参与贡献,包括代码贡献、问题反馈和功能建议。

  • 文档和示例: PaddleOCR提供了详细的文档、快速入门指南和丰富的应用示例,帮助开发者快速上手。

3 使用paddleocr进行文字识别

3.1 conda环境准备

conda环境准备详见:annoconda

3.2 运行环境构建

conda create --name paddleocr python=3.8
conda activate paddleocrgit clone https://github.com/PaddlePaddle/PaddleOCR
cd PaddleOCRpip install paddlepaddle==2.5.2 -i https://mirror.baidu.com/pypi/simple
pip install -r requirements.txtpip install paddleocr==2.7.0.3 -i https://mirror.baidu.com/pypi/simple

3.3 模型下载

PP-OCR系列模型列表

模型简介模型名称推荐场景检测模型方向分类器识别模型
中英文超轻量PP-OCRv4模型(15.8M)ch_PP-OCRv4_xx移动端&服务器端推理模型 / 训练模型推理模型 / 训练模型推理模型 / 训练模型
中英文超轻量PP-OCRv3模型(16.2M)ch_PP-OCRv3_xx移动端&服务器端推理模型 / 训练模型推理模型 / 训练模型推理模型 / 训练模型
英文超轻量PP-OCRv3模型(13.4M)en_PP-OCRv3_xx移动端&服务器端推理模型 / 训练模型推理模型 / 训练模型推理模型 / 训练模型
  • 超轻量OCR系列更多模型下载(包括多语言),可以参考PP-OCR系列模型下载,文档分析相关模型参考PP-Structure系列模型下载

PaddleOCR场景应用模型

行业类别亮点文档说明模型下载
制造数码管识别数码管数据合成、漏识别调优光功率计数码管字符识别下载链接
金融通用表单识别多模态通用表单结构化提取多模态表单识别下载链接
交通车牌识别多角度图像处理、轻量模型、端侧部署轻量级车牌识别下载链接
  • 更多制造、金融、交通行业的主要OCR垂类应用模型(如电表、液晶屏、高精度SVTR模型等),可参考场景应用模型下载

根目录下创建models目录

mkdir models

下载检测模型:ch_PP-OCRv4_det_infer.tar

下载方向分类器:ch_ppocr_mobile_v2.0_cls_infer.tar

下载识别模型:ch_PP-OCRv4_rec_infer.tar

下载完成后,解压存储到models目录中

3.4 识别效果展示

3.4.1 文字检测

python tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./models/ch_PP-OCRv4_det_infer"

3.4.2 端到端识别

python tools/infer/predict_system.py --image_dir="./doc/imgs/00006737.jpg" --det_model_dir="./models/ch_PP-OCRv4_det_infer" --rec_model_dir="./models/ch_PP-OCRv4_rec_infer" --cls_model_dir="./models/ch_ppocr_mobile_v2.0_cls_infer"

其他识别结果展示

3.5 代码调用进行识别

from paddleocr import PaddleOCR
from PIL import Image
import numpy as npimage = Image.open('../data/credit01.jpg')
ocr = PaddleOCR(use_angle_cls=True, use_gpu=False, ocr_version='PP-OCRv3')
text = ocr.ocr(np.asarray(image), cls=True)
for t in text[0]:print(t[1])

输入图片:

识别结果:

('浦发银行', 0.9934564232826233)
('UnionPay', 0.9892090559005737)
('银联', 0.9966715574264526)
('SPDBANK', 0.9192584156990051)
('45641880010', 0.8774389624595642)
('010', 0.9592215418815613)
('4564', 0.95279860496521)
('MONTH/YEAR', 0.9459193348884583)
('MONTH/YEAR', 0.9803943634033203)
('00/00', 0.9096955060958862)
('VALID', 0.9954994320869446)
('00/00', 0.901260256767273)
('VALID', 0.8590766787528992)
('FROM', 0.8717232942581177)
('THRU', 0.8828291296958923)
('VISA', 0.9928451180458069)
('WANGWANGWANG', 0.9333059191703796)
('信用卡', 0.9985775947570801)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试总结

序章 说起接口测试,网上有很多例子,但是当初做为新手的我来说,看了不不知道他们说的什么,觉得接口测试,好高大上。认为学会了接口测试就能屌丝逆袭,走上人生巅峰,迎娶白富美。因此学了点开发知识…

运行新vue3项目

一,下载node并安装 官网:https://nodejs.org/en/ 查看版本: node -v二,cd进入到vue3项目目录 cd D:\Program-space\HBuilderXProject\Vue3project三,npm install npm install四,查看安装 npm list五&a…

nvm安装以及解决踩坑

nvm是node版本管理工具可以切换不同的node.js版本 一、解压下载的nvm-setup.exe安装 两个地方需一致, 二、安装完后打开新建nodejs文件夹 三、打开settings.txt文件 node_mirror: http://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/ …

Java基础之常用类

Java基础之常用类 一、包装类1.1、Java基本数据类型及其对应的包装类1.2、包装类的自动装箱、自动拆箱机制1.3、包装类的优点 二、String类三、StringBuffer类和StringBuilder类3.1、主要区别:3.2、StringBuffer/StringBuilder用法(两者用法一致) 四、日期类4.1、Da…

捷达EA113汽油机四缸汽车曲柄连杆机构毕业设计

wx供重浩:创享日记 对话框发送:捷达 获取完整论文报告工程源文件 本文以捷达EA113汽油机的相关参数作为参考,对四缸汽油机的曲柄连杆机构的主要零部件进行了结构设计计算,并对曲柄连杆机构进行了有关运动学和动力学的理论分析与计…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能(Embodied Intelligence)指的是机器人或智能体通过感知、理解和交互来适应环境,并执行任务的能力。与传统的基于规则或符号的人工智能不同,具身智能强调将感…

Vue3水印(Watermark)

APIs 参数说明类型默认值必传width水印的宽度,默认值为 content 自身的宽度numberundefinedfalseheight水印的高度,默认值为 content 自身的高度numberundefinedfalserotate水印绘制时,旋转的角度,单位 number-22falsezIndex追加…

Kafka生产者发送消息的流程

Kafka 生产者发送消息的流程涉及多个步骤,从消息的创建到成功存储在 Kafka 集群中。以下是 Kafka 生产者发送消息的主要步骤: 1. 创建消息 生产者首先创建一个消息,消息通常包含一个键(可选)和一个值,以及…

Unity 自带的一些可以操控时间的属性或方法。

今天来总结下Unity自带的一些可以操控时间的方法。 1、Time.time。比较常用计算运行时间而触发特定事件。 public class Controller : MonoBehaviour {public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…

MySQL数据库入门到大牛_基础_17_触发器

文章目录 1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 5. 第十七章练习 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关…

【开源】基于Vue.js的高校学生管理系统的设计和实现

项目编号: S 029 ,文末获取源码。 \color{red}{项目编号:S029,文末获取源码。} 项目编号:S029,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学…

deque容器结构学习笔记

1.结构图 2.deque对比vector和list deque双端队列,就像是list和vector的结合 vector: 优点:1.可以随机读取 2. 空间利用率高 缺点:1. 除了尾插尾删,其他插入删除效率比较低 2. 扩容效率低 list: 优点&…