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

news2024/11/15 4:39:37

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 os

from 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 是否为 None
            for 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.coloradmin.cn/o/2110726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效实用的网站ICP备案查询接口

随着互联网的日益发展,对于网站的监管变得越来越重要。为了更好地管理和监督互联网上的网站,官方要求所有在中国境内的网站都需要进行ICP备案。因此,ICP备案不仅是法律要求,也是衡量一个网站是否正规的重要标志之一。为了便于开发…

开题报告撰写的四大难点与应对策略

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 对于每个即将进入毕业论文阶段的学生来说,开题报告是一道必经的门槛。开题报告不仅决定了你的论文方向,还对后续的研究和写作起到重要的引导作用。 然而,许多学生在撰写…

什么是车端、站端、电池端换电连接器?

材料选择与导电性能 换电连接器首先需要承受大电流、高电压的传输,因此其材料选择至关重要。为了确保电力传输的高效与稳定,大多数换电连接器采用高导电性材料,如铜材或更先进的合金材料。这些材料不仅具有优异的导电性能,还能在…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中,PDF文件和Word文档是我们离不开的两种最常见的文件,而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件,掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

轻量级模型解读——EfficientNet系列

EfficientNet自2019年谷歌提出以来,经历了三个版本,2019EfficientNet ——> 2020EfficientNet-Lite——> 2021EfficientNetv2 文章目录 1、EfficientNet2、EfficientNetv23、EfficientNet-Lite 对于EfficientNet和EfficientNetv2的解读可见另外两篇…

10Python的Pandas:样式Style

Pandas 提供了多种样式选项,可以让你对数据框的显示进行格式化。这些样式可以帮助突出显示数据中的某些元素、设置颜色、格式化数字等。以下是一些常用的 Pandas 样式示例: 1. 基本样式设置 要为整个数据框应用样式,可以使用 style 属性。例…

智 能 合 约

1. 智能合约的历史 智能合约最初是由 Nick Szabo 在 20 世纪 90 年代后期的一篇名为 Formalizing and Securing Relationships on Public Networks(《公共网络上关系的格式化和安全保护》)的文章中提出的,但是 20 年之后,比特币的发明和区块链…

WebAPI (一) 基本认知;querySelector选取dom对象;操作元素属性、表单属性;自定义属性;定时器之间歇函数

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(cl…

简单比较 http https http2,我们要如何把http升级为https

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 什么是HTTP 超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也…

《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-02-广域网网络架构

文章目录 1. 概念和组成2. 网络架构2.1 单核心广域网3.2 双核心广域网3.3 环型广域网3.4 半冗余广域网3.5 对等子域广域网3.6 层次子域广域网 1. 概念和组成 组成(以功能看) 通信子网:将分布在不同地区的局域网或计算机系统互连起来资源子网&…

阿里P7大牛整理自动化测试高频面试题

最近好多粉丝咨询我,有没有软件测试方面的面试题,尤其是Python自动化测试相关的最新面试题,所以今天给大家整理了一份,希望能帮助到你们。 接口测试基础 1、公司接口测试流程是什么? 从开发那边获取接口设计文档、分…

vscode 使用git bash,路径分隔符缺少问题

window使用bash --login -i 使用bash时候,在系统自带的terminal里面进入,测试conda可以正常输出,但是在vscode里面输入conda发现有问题 bash: C:\Users\marswennaconda3\Scripts: No such file or directory实际路径应该要为 C:\Users\mars…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题,目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Live800:全方位客户服务:从售前到售后的无缝衔接

在现今这个瞬息万变的商业世界里,企业与客户之间的关系已经超越了简单的买卖交易,转而成为了一种更加紧密、持久的互动。全方位客户服务正是这一趋势下的产物,它如同一条温暖的纽带,将企业的关怀与客户的需求紧密相连,…

搭贝低代码平台:工程项目管理系统的智能化变革

在现代建筑工程中,项目管理的复杂性和挑战不断增加,传统的项目管理方式往往难以满足快速变化的市场需求和高效管理的要求。搭贝低代码平台的工程项目管理系统(EPM)通过智能化和自动化手段,帮助企业克服这些挑战&#x…

GitHub图床

GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…

跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准

随着物联网、大数据、云计算等技术的飞速发展,视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础,其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…

基于时序差分的无模型强化学习:Q-learning 算法详解

目录 一、无模型强化学习中的时序差分方法与Q-learning1.1 时序差分法1.2 Q-learning算法状态-动作值函数(Q函数)Q-learning 的更新公式Q-learning 算法流程Q-learning 的特点 1.3 总结 一、无模型强化学习中的时序差分方法与Q-learning 动态规划算法依赖…

人工智能时代,程序员如何保持竞争优势?

在当前人工智能技术飞速发展的背景下,程序员的工作方式与职业角色正经历着前所未有的深刻变革。随着 ChatGPT、Midjourney、Claude 等 AIGC 技术的迅速崛起,AI 辅助编程工具的应用日益广泛,极大地改变了编程的传统模式。这一趋势不仅提升了编…

moonlight串流配置太复杂?推荐一款无需配置的宝藏串流软件GameViewer远程

moonlight支持将PC游戏实时串流到安卓、iOS、Apple TV、Chromebook、PS Vita甚至Raspberry Pi等设备上,让用户无需携带笨重的游戏设备,即可随时随地进行游戏。 但是moonlight的门槛较高,很多串流新手不懂得如何配置,同时如果没有I…