PDF 文件的解析

1、文本 PDF 的解析

1.1、文本的提取

进行文本提取的 Python 库包括:pdfminer.six、PyMuPDF、PyPDF2 和 pdfplumber,效果最好的是 PyMuPDF,PyMuPDF 在进行文本提取时能够最大限度地保留 PDF 的阅读顺序,这对于双栏 PDF 文件的抽取非常有用。下面就以难度比较大的双栏 PDF 为例,来介绍使用 PyMuPDF 库进行文字抽取的效果。
我们以下面的 PDF 为例来看使用 PyMuPDF 进行文字提取的效果。
在这里插入图片描述
进行文本提取的代码如下:

import pymupdfpages = pymupdf.open("./test_data/2022110404_pdf.pdf")
text = pages[0].get_text()print(text)

打印的结果如下:

局进行了首次 HTV-2 飞行试验,试验未取得成功,但验证了助推火箭与高超声速飞行器分离
的技术,为未来发展奠定了基础。美国国防高级研究计划局计划于 2011 年进行 HTV_2 的第
二次飞行试验。目前,美国还在开展 HCV 缩比技术验证机 HTV-3 的设计,以及 HCV 推进方案
的选型工作。
HTV-2 超高速飞行器
(2)“常规打击导弹”计划
“常规打击导弹”计划是美国空军正在研制的另外一种快速全球打击武器,以“猎鹰”
计划的“高超声速技术验证机”为基础进行研制。它也是一种无动力的高超声速滑翔飞行器,
在大气层内滑翔时间约 800(后续型号将达到 3000),最大飞行距离 11000 千米,可以
投送包括“小直径炸弹”、“联合直接攻击弹药”、情报/监视/侦察/毁伤评估无人机等多
种有效载荷。目前,“常规打击导弹”的研制已进入第二阶段,将开展载荷投送飞行器的实
际设计、研制和飞行试验。美空军计划在 2012 年初进行“常规打击导弹”投送载荷飞行器
的飞行试验,2017-2020 年在本土部署首个“常规打击导弹”系统。

1.2、表格的提取

表格提取效果比较好的库有 camelot 和 tabula ,表格又可以分为有线表和少线表。下面就分别以有线表和少线表为例来介绍 camelot 和 tabula 的使用。
我们以下面的 PDF 为例来看使用 camelot 和 tabula 进行有线表格提取的效果。
在这里插入图片描述
使用 camelot 进行表格提取的代码如下:

import camelot
tables = camelot.read_pdf('data.pdf')
print(tables[0].df)

输出结果如下:

0          学校       城市排名      地区排名               学校类型                 学校地址
1      江苏天一中学   无锡市第 1 名  锡山区第 1 名  普通,公办,省级示范校,国家级重点     无锡锡山区东亭二泉中路 182     无锡市第一中学   无锡市第 2 名  梁溪区第 1 名            公办,省重点,         无锡市运河东路 983   江苏省锡山高级中学   无锡市第 3 名  惠山区第 1 名    公办,省级示范校,省一级重点,    江苏省无锡市惠山区政和大道 14   江苏省太湖高级中学   无锡市第 4 名  滨湖区第 1 名          公办,省级示范校,       江苏省无锡市滨湖区太湖镇方桥
5   江苏省梅村高级中学   无锡市第 5 名  滨湖区第 2 名            公办,省重点,  江苏省无锡市湖滨区沁园新村 1466   无锡市第一女子中学   无锡市第 6 名  新吴区第 1 名          公办,省级示范校,       江苏省无锡市新区梅村镇梅育路
7   无锡市第三高级中学   无锡市第 7 名  梁溪区第 2 名                 公办     江苏省无锡市崇宁路崇宁弄 68   无锡市洛社高级中学   无锡市第 8 名  新吴区第 2 名            公办,省重点,      江苏无锡惠山区羊腰湾 509   江苏省锡东高级中学   无锡市第 9 名  惠山区第 2 名             普通,省重点           无锡市洛社镇新兴东路
10  无锡市辅仁高级中学  无锡市第 10 名  锡山区第 2 名              国家级重点   无锡市锡山区安镇街道文瑞路 60

使用 tabula 进行表格提取的代码如下:

import tabuladfs = tabula.read_pdf("data.pdf")
print(dfs[0])

输出结果如下:

0          学校       城市排名      地区排名               学校类型                 学校地址
1      江苏天一中学   无锡市第 1 名  锡山区第 1 名  普通,公办,省级示范校,国家级重点     无锡锡山区东亭二泉中路 182     无锡市第一中学   无锡市第 2 名  梁溪区第 1 名            公办,省重点,         无锡市运河东路 983   江苏省锡山高级中学   无锡市第 3 名  惠山区第 1 名    公办,省级示范校,省一级重点,    江苏省无锡市惠山区政和大道 14   江苏省太湖高级中学   无锡市第 4 名  滨湖区第 1 名          公办,省级示范校,       江苏省无锡市滨湖区太湖镇方桥
5   江苏省梅村高级中学   无锡市第 5 名  滨湖区第 2 名            公办,省重点,  江苏省无锡市湖滨区沁园新村 1466   无锡市第一女子中学   无锡市第 6 名  新吴区第 1 名          公办,省级示范校,       江苏省无锡市新区梅村镇梅育路
7   无锡市第三高级中学   无锡市第 7 名  梁溪区第 2 名                 公办     江苏省无锡市崇宁路崇宁弄 68   无锡市洛社高级中学   无锡市第 8 名  新吴区第 2 名            公办,省重点,      江苏无锡惠山区羊腰湾 509   江苏省锡东高级中学   无锡市第 9 名  惠山区第 2 名             普通,省重点           无锡市洛社镇新兴东路
10  无锡市辅仁高级中学  无锡市第 10 名  锡山区第 2 名              国家级重点   无锡市锡山区安镇街道文瑞路 60

从结果可以看出,在提取有线表时,不管是 camelot 还是 tabula 都能很好地进行提取,而且不需要过多的参数设置。

1.3、扫描 PDF 的解析

1.3.1、文本的提取

在从扫描的 PDF 文件中提取文本时,使用开源的 PaddleOCR,并且用 PPStructure 做版面的分析。我们还是以下面的 PDF 文件为例,不过这是的 PDF 文件是扫描 PDF。
在这里插入图片描述
提取文本的代码如下:

import os
import cv2
from paddleocr import PPStructure, draw_structure_result, save_structure_res
from PIL import Imageimg_path = "./bert-1.png"table_engine = PPStructure(show_log=True)
save_folder = './output'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])font_path = './fonts/simfang.ttf'
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result, font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

提取结果如下:
在这里插入图片描述
图中的左边是根据给出的版面分析结果画出来的,可以看出对双栏 PDF 做了正确的解析。右边是根据识别出来的文本以及文本的坐标画出来的,可以看出基本上和左边的版面以及内容是一致的。

1.3.1、表格的提取

我们还是以下面的 PDF 文件为例,不过这是的 PDF 文件是扫描 PDF。
在这里插入图片描述
代码如下:

import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_res
from PIL import Imagetable_engine = PPStructure(show_log=True)
save_folder = './output'
img_path = './bert-6.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])for line in result:line.pop('img')print(line)

在上面的输出结果中,有一行类型为 table 的输出,我们将这一行中 html 标签下的内容拷贝出来,放到一个 html 文件中,得到如下的表格:
在这里插入图片描述
可以看出在表头这一块还是有一些差异,但是其他的信息基本都是正确的,应该说效果还是不错的。

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

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

相关文章

一分钟学习数据安全—自主管理身份SSI加密技术

上篇介绍了SSI的架构。架构之后,我们要了解一下SSI发展的驱动力:加密技术。现代数字通信离不开数学和计算机科学,加密技术也源于此。加密技术使区块链和分布式账本得以实现,也使SSI成为可能。 以下我们就概览一下SSI基础架构中涉及…

【Java毕业设计】基于JavaWeb的旅游论坛管理系统

文章目录 摘 要目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 Java编程语言1.4.2 vue技术1.4.3 MySQL数据库1.4.4 B/S结构1.4.5 Spring Boot框架 2 系统需求分析2.1 可行性分析2.2 系统流程2.2.1 操作流程2.2.2 登录流程2.2.3 删除信息…

基于Springboot+vue实现的汽车服务管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

6.6SSH的运用

ssh远程管理 ssh是一种安全通道协议,用来实现字符界面的远程登录。远程复制,远程文本传输。 ssh对通信双方的数据进行了加密 用户名和密码登录 密钥对认证方式(可以实现免密登录) ssh 22 网络层 传输层 数据传输的过程中是加密的 …

鸿蒙全栈开发-浅谈鸿蒙~线程模型

前言 如果你现在正巧在找工作,或者琢磨着换个职业跑道,鸿蒙开发绝对值得你考虑一下。 为啥?理由很简单: 市场需求大:鸿蒙生态还在持续扩张,应用开发、系统优化、技术支持等岗位需求旺盛,找工作…

聊聊二叉堆、红黑树、时间轮在定时任务中的应用

定时任务作为常用的一种调度方式,在各大系统得到了广泛的应用。 笔者也曾写过两篇关于定时任务框架介绍的文章: 《介绍一下,spring cloud下的另一种定时任务解决方案》《四叉堆在GO中的应用-定时任务timer》 之前都是以如何使用为主,这次从…

SOA主要协议和规范

Web服务作为实现SOA中服务的最主要手段。首先来了解Web Service相关的标准。它们大多以“WS-”作为名字的前缀,所以统称“WS-*”。Web服务最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持,如图…

此表单不安全,因此系统已关闭自动填充功能

问题截图: 截图就不放了,公司的系统不方便,就是form表单会有个提示“此表单不安全,因此系统已关闭自动填充功能” 解决思路: 1、问题原因 使用https访问,但表单提交地址是http的 2、查看表单配置 表单…

VCS基本仿真

这里记录三种仿真方式: 第一种是将verilog文件一个一个敲在终端上进行仿真; 第二种是将多个verilog文件的文件路径整理在一个文件中,然后进行仿真; 第三种是利用makefile文件进行仿真; 以8位加法器为例: …

一句话说清HDMI ARC eARC功能和区别

HDMI: 高清多媒体接口,主要用于传输高清音视频信号,High Definition Multimedia Interface。 ARC: 音频回传通道,Audio Return Channel eARC: 增强型音频回传通道,第一个E是增强的意思,Enhanced Audio…

分布式数据库架构:从单实例到分布式,开发人员需及早掌握?

现在互联网应用已经普及,数据量不断增大。对淘宝、美团、百度等互联网业务来说,传统单实例数据库很难支撑其性能和存储的要求,所以分布式架构得到了很大发展。而开发人员、项目经理,一定要认识到数据库技术正在经历一场较大的变革,及早掌握好分布式架构设计,帮助公司从古…

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…

学习周报:文献阅读+Fluent案例+Fluent相关算法学习

目录 摘要 Abstract 文献阅读:求解正逆运动波问题的物理信息神经网络 文献摘要 讨论|结论 理论基础 KWM(运动波动方程) Hard constraint (硬约束方式) 具有重新分布的搭配点的PINN 具有停止梯度的分数阶方程 …

Gradio 案例——将文本文件转为词云图

文章目录 Gradio 案例——将文本文件转为词云图界面截图依赖安装项目目录结构代码 Gradio 案例——将文本文件转为词云图 利用 word_cloud 库,将文本文件转为词云图更完整、丰富的示例项目见 GitHub - AlionSSS/wordcloud-webui: The web UI for word_cloud(text t…

算法导论实战(三)(算法导论习题第二十四章)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀算法启示录 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十四章 24.1-3 24.1-4 2…

DVWA-XSS(Reflected)

反射型XSS可以用来窃取cookie Low 输入1111进行测试&#xff0c;发现1111被打印 输入<script>alert(document.cookie)</script>&#xff0c;出现弹窗&#xff0c;获得cookie Medium 查看后端代码&#xff0c;发现对<script>进行了转义&#xff0c;但是…

【UML用户指南】-10-对高级结构建模-高级类

目录 1、类目 2、高级类 3、可见性 4、实例范围和静态范围 5、抽象元素、叶子元素和多态性元素 6、多重性 7、属性 8、操作 9、模板类 10、标准元素 1、类目 类目 &#xff08;classifier&#xff09;是描述结构特征和行为特征的机制。类目包括类、关联、接口、数据类…

nvm安装使用

什么是 node.js&#xff1f;&#xff1a; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时&#xff0c;可以在服务器端运行 JavaScript。由于其非阻塞 I/O 模型和事件驱动架构&#xff0c;Node.js 非常适合构建高并发、低延迟的应用程序。随着 Node.js 的不断发展&…

STM32作业实现(四)光敏传感器

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

SSM框架整合,内嵌Tomcat。基于注解的方式集成

介绍&#xff1a; SSM相信大家都不陌生&#xff0c;在spring boot出现之前&#xff0c;SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了&#xff0c;但是现在市面上任然有很多老项目是基于SSM技术的。因此&#xff0c;能熟练掌握SSM进行开发…