使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档

代码:https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file

介绍文档:https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html

2、依赖安装

在使用过程中需要安装库,可以依据代码运行过程中的提示安装。我使用的为python3.7,安装库为:
在这里插入图片描述

3、poppler for PDF OCR

我主要使用图片OCR以及PDF转DOCX文件,后者需要poppler,我使用的系统为windows.在此处进行下载:
https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.07.0-0
解压后需要将poppler的bin路径加到系统环境变量path中

4、图像ocr代码样例:

from paddleocr import PaddleOCR, draw_ocr# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './doc/imgs_en/254.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):res = result[idx]for line in res:print(line)# 显示结果
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

5、pdf ocr代码样例:

import osfrom pdf2image import convert_from_path
from paddleocr import PaddleOCR
import numpy as np
from docx import Document
from PIL import Image
current_path = os.path.abspath(__file__)
father_path = os.path.abspath(os.path.dirname(current_path))
input_path = os.path.join(father_path, 'mydata', 'input', '种植品种推荐1.pdf')
output_path = os.path.join(father_path, 'mydata', 'output', '种植品种推荐1.docx')
# 步骤 1: 将 PDF 转换为图片
pages = convert_from_path(input_path, 300)  # 转换为 PIL 图像对象# 步骤 2: 初始化 OCR 模型
ocr = PaddleOCR(use_angle_cls=True, lang='ch')# 步骤 3: 遍历每一页,进行 OCR 处理
results = []
for page in pages:# 将 PIL 图像转换为 numpy 数组page_np = np.array(page)# 使用 OCR 提取文本ocr_result = ocr.ocr(page_np, cls=True)page_text = []for line in ocr_result:if line:  # 检查 line 是否为 Nonefor word_info in line:# word_info 包含了文本和置信度text, confidence = word_info[1]page_text.append(text)  # 提取文本部分results.append('\n'.join(page_text))# 打印提取的文本
# for result in results:
#     print(result)# 步骤 4: 将文本保存为 DOCX 文件
doc = Document()
for i, page_text in enumerate(results, 1):doc.add_heading(f'Page {i}', level=1)doc.add_paragraph(page_text)doc.save(output_path)

注意修改为自己的文件路径

6、识别效果:

原文件:
在这里插入图片描述

识别效果:
在这里插入图片描述

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

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

相关文章

MySQL Email验证流程详解:从注册到激活!

MySQL Email通知系统搭建教程!如何从MySQL发送邮件? MySQL Email验证是一个至关重要的环节,它确保了用户注册过程的安全性和有效性。AokSend将详细介绍从用户注册到MySQL Email激活的完整流程,帮助开发者更好地理解和实现这一功能…

视频编码与传输 学习笔记 1 一些视频压缩算法的介绍

大概是这么个结构: 说白了,就是视频太大,不压缩不行,因此我们会用压缩比非常夸张但对于视频来说效果很好的压缩方法先对视频压缩(source coding)然后把压缩后的视频发出去,要看的时候再解压。 就…

青岛实训 8月22号 day34

一、回顾 1.主从复制(高可用) 2.传统的主从复制 3.gtids事务型的主从复制 4.注意 1)server_id唯一 2)8.X版本需要get_ssl_pub_key 3)5.X不需要 4)change master to 5)stop | start slave 5.非…

HIVE 数据仓库工具之第二部分(数据库相关操作)

HIVE 数据仓库工具之第二部分(数据库相关操作) 一、Hive 对数据库的操作1.1 创建数据库1.1.1 创建数据库语法1.1.3 示例 1.2 使用数据库1.2.1 使用数据库语法1.2.2 示例 1.3 修改数据库1.3.1 修改数据库的语法1.3.2 示例 1.4 删除数据库1.4.1 删除数据库…

Aloudata CAN 发布:真正实现企业指标的管理、研发与消费一体化

对于企业的运营和管理来说,集自动化数据生产、业务化数据语言、智能化数据分析的指标管理方案至关重要。 指标是对业务过程和结果的度量,正如德鲁克所说,“如果无法度量就无法管理”。 指标管理痛点爆发,管、研、用一体方案备受青…

python-简单的dos攻击

前言 这个是DOS攻击学习(注意:千万别去攻击有商业价值的服务器或应用,不然会死的很惨(只有一个IP通过公网访问容易被抓),前提是网站没有攻击防御) 创建一个以python编写的后端web服务(好观察) 安装flask pip install flask from flask import Flaskapp …

Day22_K8S

文章目录 3.资源管理方式通过命令管理通过配置文件管理4. 基本概念入门4.1 Namespace4.2 Pod4.3 Label4.4 Deployment4.5 Service5. Pod详解5.1 Pod介绍5.2 Pod配置5.3 Pod生命周期5.3.1 初始化容器5.3.2 钩子函数5.3.3 容器探测5.3.4 重启策略5.4 Pod调度5.4.1 定向调度5.4.2 …

JavaScript DOM事件流之捕获与冒泡

DOM事件流——捕获与冒泡 网页是由一个一个元素组成的,正如我们肉眼所见,网页上的元素存在包含关系,简单的点击又怎么确定到底谁来触发响应呢?想象一下,在纸上画了两个大小不同的同心圆,然后用手指指向它里…

迁移替换AD域时,有几个关键点需要注意

在当今的数字化时代,企业对于身份管理和访问控制的需求日益增长。然而,传统的AD域控方案在面对国产化替代和业务上云的趋势时,逐渐显露出一些局限性。宁盾国产化身份域管作为一种迁移替换AD域控的创新解决方案,正逐渐崭露头角&…

通风天窗代号解析与功能介绍

通风天窗的代号通常涉及其类型、型号、尺寸及功能等多个方面。以下是对通风天窗代号的一般性释义。一、代号结构 通风天窗的代号往往遵循一定的编码规则,以清晰表示其特性。如在18J621-3《通风天窗》图集中,通风天窗的代号可能以“TCxx-xxx”的形式出现&…

云计算的成本:您需要了解的 AWS 定价信息

AWS 定价方案、免费套餐优惠以及通过预先预留容量来降低总体成本的选项。 欢迎来到雲闪世界。越来越多的企业开始转向云基础设施而非本地数据中心,云领域的竞争空前激烈。主要参与者甚至不惜削减成本并提供令人难以置信的折扣,以在云市场中占据一席之地。…

利用机器人自动回复软件,显著提升客户体验

随着科技的飞速发展及互联网普及,机器人自动回复软件成为了现代企业的重要工具。无论是在客户服务领域,还是在营销、销售等方面,自动回复机器人都表现出了强大的功能和显著的效果。究竟什么是机器人自动回复技术?它是如何运行的?本文将为您…

ELK学习笔记——如何给Kibana新增用户和角色

Kibana新增用户和角色 首先用超管账号登录上Kibana,按照下面步骤操作 1、创建角色 按图操作 2、创建用户 按图操作 3、给用户分配角色 至此,角色和用户绑定成功; 最后,可以退出管理员账号,登录这个新…

安防监控/视频汇聚EasyCVR视频监控平台级联上级,无法播放是什么原因?

EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。EasyCVR视频汇聚平台采用先进的图像处理技术和传输协议,能够确保高清、稳定的…

抖音发布Unity小游戏的errorMsg: native build failed

为了更好的性能,兼容更多字节平台,选择了Android Native IOS WebGL方案。结果Native经常报错:errorMsg: native build failed,导致IL2CCP构建失败。 最终,花了我两周时间!两周啊!还是无法解决。…

H3C SR-MPLS通过OSPF通告SID配置

首先在配置前理解几个基本概念 Prefix SID配置 统一分配和配置(全局规划)loopback和prefix sidPrefix SIDSRGB Base(16000)index Adj SID自动生成 对应SR节点间的互联链路SR节点本地标识,从设备本地Segment池中动态…

swagger简单使用学习

注意 一下基于spring-boot 3.0.2版本&#xff0c;该版本不支持springfox-swagger2 2.9.2会报错&#xff0c;无法访问swagger 安装 在pomx文件中添加对应的依赖 <!-- swagger --><dependency><groupId>org.springdoc</groupId><artifactId>spr…

【三维重建】近期进展(完善中)

文章目录 前言一、UC-gs:交叉视图不确定性的航拍街道重建&#xff08;Drone-assisted Road Gaussian Splatting with Cross-view Uncertainty&#xff09;&#xff08;质量 &#xff09;细节结果 二、实时高斯&#xff1a;通过光度SLAM加速3DGS&#xff08;Towards Real-Time G…

Facebook的AI进化:如何用智能技术提升内容推荐

在数字时代&#xff0c;社交媒体平台不仅是信息传播的重要渠道&#xff0c;也是个人和品牌互动的关键平台。Facebook作为全球领先的社交媒体网络&#xff0c;其内容推荐系统的优化在很大程度上提升了用户体验。本文将探讨Facebook如何通过人工智能&#xff08;AI&#xff09;技…

AD7606工作原理以及FPGA控制验证(串行和并行模式)

文章目录 一、AD7606介绍二、AD7606采集原理2.1 AD7606功能框图2.2 AD7606管脚说明 三、AD7606并行模式时序分析以及实现3.1 并行模式时序图3.2 并行模式时序要求3.3 代码编写3.4 仿真观察 四、AD7606串行模式时序分析以及实现4.1 串行模式时序图4.2 串行模式时序要求4.3 代码编…