paddle实现获取pdf的内容

news2024/11/15 15:28:12

paddle实现获取pdf的内容

  • 1. 环境安装
  • 2. 实现代码

  • 源码链接

1. 环境安装

  • 安装paddlepaddle
    • gpu版本
      python -m pip install paddlepaddle-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
      
    • cpu版本:
      python -m pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
      
  • 安装PaddleOCR
    pip install "paddleocr>=2.0.1" # Recommend to use version 2.0.1+
    
  • 其他库
    pip install Pillow==9.5.0
    pip install fitz==0.0.1.dev2
    pip install numpy==1.24.4
    pip install PyMuPDF==1.19.0
    pip install opencv-python==4.6.0.66
    

2. 实现代码

  • 代码
    import cv2
    import fitz
    import numpy as np
    from PIL import Image
    from paddleocr import PaddleOCR, draw_ocr
    
    ocr = PaddleOCR(use_angle_cls=True, lang="ch", page_num=427)  # page_num=pdf文件页数
    img_path = 'data/深度学习进阶自然语言处理.pdf'
    result = ocr.ocr(img_path, cls=True)
    for idx in range(len(result)):
        res = result[idx]
        for line in res:
            print(line)
    
    # draw result
    imgs = []
    with fitz.open(img_path) as pdf:
        for pg in range(0, pdf.pageCount):
            page = pdf[pg]
            mat = fitz.Matrix(2, 2)
            pm = page.getPixmap(matrix=mat, alpha=False)
            # if width or height > 2000 pixels, don't enlarge the image
            if pm.width > 2000 or pm.height > 2000:
                pm = page.getPixmap(matrix=fitz.Matrix(1, 1), alpha=False)
    
            img = Image.frombytes("RGB", [pm.width, pm.height], pm.samples)
            img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
            imgs.append(img)
    
    for idx in range(len(result)):
        # 保存获取的文本
        with open(f'data/data_txt/text_{idx}.txt', 'w', encoding='utf-8') as f:
            res = result[idx]
            image = imgs[idx]
            boxes = [line[0] for line in res]
            txts = [line[1][0] for line in res]
            for line in txts:
                f.write(line)
                f.write('\n')
            scores = [line[1][1] for line in res]
            im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
            im_show = Image.fromarray(im_show)
            # 保存图片
            im_show.save('data/images/page_{}.jpg'.format(idx))
    
  • 结果展示
    在这里插入图片描述

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

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

相关文章

NeRF知识点:不同Contraction的数学表达

NeRF知识点:不同Contraction的数学表达 目录 Foward-facing 场景:NDC(Normalized Device Coordinate)1 360,object-centric 场景: inverse-sphere warping1 MeRF: Piecewise-projective Contraction1 …

基于以太坊+IPFS的去中心化数据交易方法及平台

自己的论文,哎费事 目录 基于以太坊IPFS的去中心化数据交易方法及平台 基于以太坊IPFS的去中心化数据交易方法及平台 摘要: 数据交易过程中存在数据权属不明和数据安全问题。本文开发了一种基于以太坊IPFS的去中心化数据交易方法及平台。方法包括&am…

函数指针数组

前面学习过数组 指针数组:用来存放数组指针(地址)的数组 int main() {int arr1[] { 0 };int arr2[] { 0 };int arr3[] { 0 };int* p[3] { arr1,arr2,arr3 };//指针数组return 0; }那么函数指针数组,就是用来存放几个类型相同…

application.yml 或 application.properties 配置文件乱码问题

一、idea写application.yml配置文件, 用到了中文注释,写的时候好好地,但是运行项目后,出现乱码情况,如下: 二、解决方法 将文件编码方式 设置成UTF-8即可 File-Setting-Editor-File Encodings 再次运行项…

「2024」预备研究生mem-一元二次不等式恒成立高次、分次不等式(包含穿根法)

一、一元二次不等式恒成立 二、高次不等式(包含穿根法) 三、分次不等式 四、课后习题

蓝牙资讯|谷歌推迟上线Find My Device,需等到苹果同步跟进

谷歌今年 5 月初宣布推出“寻找我的设备”(Find My Device Network),目标是为全球超过 10 亿台安卓设备服务,帮助用户寻找丢失的设备。 谷歌在今年 5 月宣布,Find My Device 网络将兼容 Tile、Pebblebee 和 Chipolo …

aws中opensearch 日志通(Centralized Logging with OpenSearch)2.0(一)

aws日志通2.0 实现全面的日志管理和分析功能 一体化日志摄取 :把aws服务器日志和应用日志传输到opensearch域中无代码日志处理 :在网页控制台中就可以实现数据处理开箱即用 :提供可视化模版(nginx、HTTP server ) 架构…

方法的定义和格式

方法 什么是方法? 方法是程序中最小的执行单元 定义:把一些代码打包在一起,该过程称为方法 实际开发过程中,什么时候用到方法: 重复的代码,具有独立功能的代码可以抽取到方法中 实际开发中,方…

【容器编排】初识 Kubernetes

目录 1.简介 2.为什么需要 k8s 3.k8s 能做什么? 4.k8s 不是什么? 1.简介 摘取官网: 概述 | Kubernetes Kubernetes 这个名字源于希腊语,意为舵手或飞行员。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kub…

Vue3自定义封装音频播放器

🚀 本片主要讲解如何使用Vue3去封装一个音频播放器,以及解决在ios微信浏览器中 无法获取音频时长问题 一、效果图 二、解决在微信环境中ios无法获取音频时长问题 1、安装weixin-js-sdk cnpm i weixin-js-sdk --save2、使用,通过wx.ready中重…

【CAS6.6源码解析】深入解析TGT和ST的唯一ID是怎样生成的-探究ID生成器的设计

CAS作为一款企业级中央认证服务系统,其票据的生成是非常重要的一环,在票据的生成中,有一个比较重要的点就是为票据生成唯一ID,本文将深入解析CAS系统中的TGT和ST的唯一ID是怎样生成的。 文章重点分析源码的过程,不想看…

W2NER详解

论文:https://arxiv.org/pdf/2112.10070.pdf 代码:https://github.com/ljynlp/W2NER 文章目录 W2NER介绍模型架构解码 源码介绍数据输入格式模型代码 参考资料 W2NER 介绍 W2NER模型,将NER任务转化预测word-word(备注&#xff…

基于flask旅游大数据可视化分析推荐系统-计算机毕设 附源码10903

flask旅游大数据可视化分析推荐系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游大…

味知香VS千味央厨,谁是预制菜新王?

夏日炎炎,预制菜赛道的下半场也硝烟弥漫,可谓“冰火两重天”。 预制菜赛道两大“玩家”:“预制菜第一股”味知香(605089.SH)、“餐饮供应链第一股”千味央厨(001215.SZ)均于近日公布了2023年一季报,其业绩有所分化。 …

3D Web轻量化渲染开发工具HOOPS Communicator是什么?

HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,是一款专注于基于Web端的高级3D工程应用程序。由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模型转换和编…

考试系统对教育评估的作用和意义

随着现代教育的发展,考试系统已经成为评估学生学业水平的重要工具。考试系统通过量化学生的知识掌握程度、学术能力和解决问题的能力,为教育评估提供了客观的数据基础。 考试系统能够帮助学校和教育部门全面了解学生的学习状况。通过考试结果&#xff0…

2023东三省“深圳杯”A题全保姆论文讲解

A题 影响城市居民身体健康的因素分析 以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病(以下简称慢性病)已经成为影响我国居民身体健康的重要问题。随着人们生活方式的改变,慢性病的患病率持续攀升。众所周知&am…

C#winform顺序打包成安装项目(VS2022)

一、在打包之前 (VS中需要包括Microsoft visual studio installer projects扩展项目) 1、在vs中找到扩展>管理扩展>搜索 installer projects 进行扩展的下载 2、右键Application Folder >点击 Add>点击项目输出>点击确认后>旁边则会生成一个主输出的文 3、…

132个心理性格趣味测试ACCESS\EXCEL数据库

今天又遇到了一个心理测试的数据库,这个数据库在表结构的设置上很直观,属于那种好的数据库结构,共分三个表,一个是测试项目描述表、一个是测试题选项得分表、一个是根据得分区间解析表,表与表之间通过“question_id”字…

WIFI模块常见的三种接口类型

什么是WIFI接口: WIFI接口是用于让设备无线连接到网络的功能,使你的电脑、手机、平板等设备可以通过无线信号连接到互联网或局域网。 1.USB接口 USB接口是平时见得最多的一种接口了,用在wifi模块上,它是一种通用串行总线&#…