【笔记】Python3|2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果(汇总)

文章目录

  • PDF2HTML_Samples
    • 1 测评过程
    • 2 评估方式
    • 3 结果说明
    • 4 测评列表

PDF2HTML_Samples

目的是对比一下常用的 PDF 转 HTML/XML 的工具。

整个对比过程放在了 Github 仓库中,
欢迎提交 PR/Issue 补充更多工具:https://github.com/shandianchengzi/PDF2HTML_Samples。

对比结果同步更新在 CSDN 博客中,目录页在博客 【记录】Python3|2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果(汇总)。

整个测评流程由 @汐琐_ayq618258 (Github 账号:arche8) 学妹和我(Github账号:shandianchengzi)一起完成,我主要是写了测评的流程并搭了框架,学妹补充了各项工具的测评代码和结果。感谢学妹!

1 测评过程

  1. 运行本仓库根目录下的 tools.py 文件,新建测试目录和测试文件:
    python3 tools.py new pdfminer.six       # 新建 pdfminer.six 工具测试目录 `python_samples/test_pdfminer_six`
    python3 tools.py new pdfminer.six html  # 新建 pdfminer.six 工具的转换为 HTML 的测试文件 `python_samples/test_pdfminer_six/to_html.py`
    
  2. 测试新工具的时候只需要重写新生成的测试文件的 convert_pdf_to_{format} 这个函数的内容,其他的我全部写好了。
    1. 写测试函数的时候:
      • 如果参考了网络上的内容,在测试文件的上方填写一下 # Reference: 链接;
      • 如果工具的安装方式并非使用 pip install [工具名] 安装,将测试文件上方的 need_pip_install = True 改完 need_pip_install = False
    2. 如果一个工具有多种写法,选结果最好的一种生成在 output 下。其他的已经写好的也不用删掉,可以注释了放一边。
    3. 如果写的时候调用了除了工具名以外的其他第三方库,添加到 requirements.txt 中,以便之后我们同步更新时可以通过 pip install -r requirements.txt 装好对方的依赖。
  3. 写好函数之后,测试的方法:
    python3 tools.py test pdfminer.six       # 测试 pdfminer.six 工具下的所有格式转换文件
    python3 tools.py test pdfminer.six html  # 测试 pdfminer.six 工具的转换为 HTML 的测试文件
    

具体测试过程是调用 python_sampls/test_framework.py
工具完整功能详见 tools.py 文件。

测试输出:输出的文件在当前测评的工具的文件夹下,并被命名为 to_{format}_{pdf_name}.{format}。例如 pdfminer.six 工具样例的输出,放到 python_samples/test_pdfminer_six/outputs

2 评估方式

这个评估方式写得很笼统,具体如何大家可以自行查看测评结果。

  1. 能分清 PDF 章节
  2. 具备嵌套标签(就是格式化之后能看出来有树状 DOM 元素的效果)
  3. 统计一下各个工具的社区活跃度(开源的看 Star 数量和最后更新的时间)

3 结果说明

  1. 修改 README.md,用符号简单标注一下工具好不好用。可用的符号:❌✅⭐✨。
    1. 完全用不了就打叉❌
    2. 用得了就✅
    3. 推荐指数⭐⭐⭐⭐⭐
    4. 如果你觉得这个工具很nb就✨
  2. 详细说明可写在 results/{工具名称}.md 下。

4 测评列表

在Python中,有几个开源工具可用于将PDF文件转换为XML或HTML格式。以下是其中一些:

序号工具名网传描述测试结果
1pdfminerWarning: Starting from version 20191010, PDFMiner supports Python 3 only. For Python 2 support, check out pdfminer.six. https://pypi.org/project/pdfminer/
2pdfminer.six【这个工具是专供 Python2 的,详见 https://pypi.org/project/pdfminer/ 】这是一个PDF文档解析器,可以用于提取文本、元数据以及页面布局信息。您可以使用pdfminer.six来提取PDF中的文本内容,并将其转换为XML或HTML格式。不太好用,详见【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐pdfminer.six)
3pdfminer3k据说是 pdfminer 的 Python3 版本,不清楚和 pdfminer.six 有什么区别。
4PyPDF2这是一个纯Python库,用于处理PDF文件。虽然主要用于创建、阅读和修改PDF文件,但您也可以使用它来提取文本内容,并将其转换为XML或HTML格式。
5pdf2xml这是一个命令行工具,可以将PDF文件转换为XML格式。虽然它不是Python库,但您可以通过Python的subprocess模块来调用该工具,并处理生成的XML文件。
6pdf2htmlEX这是另一个命令行工具,用于将PDF文件转换为HTML格式。您可以通过Python的subprocess模块来调用该工具,并处理生成的HTML文件。https://blog.csdn.net/gitblog_00074/article/details/136775457✅⭐⭐⭐⭐pdf2htmlEX:除了大纲有点问题,其他都很好。它还提供了很多转换参数https://github.com/coolwanglu/pdf2htmlEX/wiki/Command-Line-Options
7PyMuPDF+tqdmhttps://blog.csdn.net/qq_28505809/article/details/124147552✅⭐PyMuPDF+tqdm:和pdfminer.six转换结果类似
8PDFQueryhttps://www.freecodecamp.org/chinese/news/extract-data-from-pdf-files-with-python✅⭐PDFQuery:不好,和pdfminer.six转换结果类似
9Spire.PDFhttps://blog.csdn.net/eiceblue/article/details/135988859, https://www.e-iceblue.com/Tutorials/Python/Spire.PDF-for-Python/Program-Guide/Conversion/Python-Convert-PDF-to-HTML.html✅⭐⭐⭐Spire.PDF:还行,就是转换参数太少,并且试用会有水印,最多只能转化10页
10pdfkitAdobe 提到了这个库,但是有人说是 iOS 专用的,StackOverflow 上只找到这个:https://stackoverflow.com/questions/75757120/convert-pdf-to-html-using-python-and-pdfkit
11pdftotree本软件包是我们开发自己的模块以替代 Adobe Acrobat 的成果。目前有几种将 pdf 转换为 html 的开源工具,但这些工具无法保留表格中的单元格结构。我们在这个项目中的目标是开发一个工具,提取 pdf 文档中的文本、数字和表格,并以易于使用的格式返回。https://pypi.org/project/pdftotree/✅⭐⭐pdftotree:能转换但效果不太好,去除了很多格式
12depdfAn ultimate pdf file disintegration tool. DePDF is designed to extract tables and paragraphs into structured markup language [eg. html] from embedding pdf pages. You can also use it to convert page/pdf to html. Built on top of pdfplumber. https://pypi.org/project/depdf/0.1.1/✅⭐⭐depdf:能转换但效果不太好,去除了很多格式,和pdftotree类似,都不太能很明显的分清PDF的各个章节
13poppdfA python (3.6+) module that wraps poppler’s pdftoimage, pdftohtml and pdftotext to extract informations from PDF. https://pypi.org/project/poppdf/
14pandocpandoc input.pdf -o output.html❌【已测,失败】pandoc 不接受 pdf 这个输入。详见 【记录】Pandoc|Linux安装最新Pandoc。

如果还有其他工具也可以尝试测试并添加进来。


后续会持续更新更详细的使用方式、测评过程和结果,会在这篇文章里增加博客链接以及描述,与 Github 仓库保持一致。

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

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

相关文章

目标检测YOLO实战应用案例100讲-基于多尺度表征学习和元增量学习的遥感影像目标检测(续)

目录 基于元学习和深度匹配的遥感图像目标检测 4.1相关工作 4.1.1元学习的介绍

机器学习:逻辑回归

概念 首先,逻辑回归属于分类算法,是线性分类器。我们可以认为逻辑回归是在多元线性回归的基础上把结果给映射到0-1的区间内,hθ(x)越接近1越有可能是正例,反之,越接近0越有可能是负例。那么&am…

C# wpf 运行时替换方法实现mvvm自动触发刷新

文章目录 前言一、如何实现?1、反射获取属性2、定义替换方法3、交换属性的setter方法 二、完整代码1、接口2、项目 三、使用示例1、倒计时(1)、继承ViewModelBase(2)、定义属性(3)、属性赋值&am…

iOS 创建依赖其他开源库的开源库

参考文章(感激各位大神前路的明灯) 参考文章一 参考项目 整体流程 流程简介 1)使用pod命令行创建本地项目和git仓库并回答终端里的四个问题 2)编辑podspec文件 3)将需要开源的代码添加到Development Pods文件夹中&am…

iOS 实现类似抖音翻页滚动效果

这里是效果图 参考抖音的滚动效果,需要我们在结束拖动的时候,动画设置偏移量 这里有一个注意点,由于我们是在拖动结束的时候,手动改变tableview的偏移量, 改变了tableView 自身原有的的滚动效果,所以我们…

近几年视频取证、视频篡改检测技术发展现状及挑战

前言 本文主要搜集了视频取证各个子领域近几年的高影响因子/引用数的文章及其主要思想和做法,旨在分析目前视频篡改检测的发展现状与热点领域,文章中也融合了自己的一点看法和展望,欢迎感兴趣的同学和我多多沟通。 本文无论是文献搜集还是方…

Linux网络抓包工具tcpdump是如何实现抓包的,在哪个位置抓包的?

Linux网络抓包工具tcpdump是如何实现抓包的,在哪个位置抓包的? 1. tcpdump抓包架构2. BPF介绍3. 从内核层面看tcpdump抓包流程3.1. 创建socket套接字3.2. 挂载BPF程序 4. 网络收包抓取5. 网络发包抓取6. 疑问和思考6.1 tcpdump抓包跟网卡、内核之间的顺序…

face_recognition+python-opencv实现摄像头实时人脸识别

参考: https://www.jianshu.com/p/9d5f0020acd5 完整代码 # -*- coding: utf-8 -*-import face_recognitionimport cv2import oscamera cv2.VideoCapture(0)font cv2.FONT_HERSHEY_DUPLEXface_names []face_codings []person_list os.listdir("faces/&quo…

【MySQL | 第八篇】在MySQL中,如何定位慢查询以及对应解决方法?

文章目录 8.在MySQL中,如何定位慢查询以及对应解决方法?8.1MySQL慢查询日志8.1.1开启慢查询(1)修改配置文件(2)设置全局变量 8.1.2日志记录在表上(实践)8.1.3日志记录在文件上&#…

Scala 重难点总结

Scala 是一种功能强大的多范式编程语言,结合了面向对象编程和函数式编程的特性。下面是 Scala 中一些重要的重难点总结以及详细代码介绍: 函数式编程: Scala 支持函数作为一等公民,可以将函数赋值给变量,作为参数传递给…

大数据开发工作中的数仓设计(Hadoop,hive ,mysql )

1.HUE工具介绍使用 HUE是CDH提供一个hive和hdfs的操作工具,在hue中编写了hiveSQl也可以操作hdfs的文件 http://主机名字:端口号 hdfs的web访问端口 http://主机名字:端口号 hdfs的程序访问端口 进入后确保hdfs hive yarn 开启 在点击hue开启 在这里面也可以进行h…

Xinlinx FPGA如何降低Block RAM的功耗

FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的写操作模式以及Block RAM的实现算法及综合设置。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现&…

js ajax初次跨域请求

最近有个页面,要请求第三方的一个api, postman里测试返回结果正常,状态正常 可在php js前端请求,返回错误,取不到任何有用信息,status 0. 没接触过跨域,一直以为第三方接口问题&#xff0c…

AntDesignReact提示key重复解决方案

在使用antd树形组件的时候,有时候会存在挂载相同的账号,相同账号的id是重复的,组件直接就不能用了,所以查找论坛,发现可以使用这个插件解决; 下载 npm install uuid项目中使用 // 导入 import { v4 as uu…

币圈Cryptosquare论坛

Cryptosquare综合性资讯论坛汇集了币圈新闻、空投信息、社会热点以及与Web3相关的工作信息。让我们一起解锁加密世界的种种可能性,探索Cryptosquare论坛带来的精彩! 币圈新闻板块: Cryptosquare论坛的币圈新闻板块是用户获取最新加密货币行业…

CentOS安装Docker指南

Docker安装与配置教程 Docker作为一种轻量级的虚拟化技术,在现代软件开发和运维中扮演着重要的角色。下面,我将以技术博主的身份,向大家详细介绍如何在Linux系统上安装和配置Docker,特别是如何设置Docker的监听地址和端口&#x…

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测…

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上,英伟达引领行业风向,宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置

知识点 常用用途: 软件仓库镜像及提供下载服务: 配置步骤 删除网站主目录中的文件(本实验机目录为/home/source ip为192.168.12.137 端口为81) cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

将本地.mp4推流成rtsp流?(windows)

概述 如何在本地机器上进行rtsp推流整个操作? 1.软件安装 1. 推流-ffmpeg下载 从官网下载windows版本,该版本已经编译好了 放到C:下找一个目录解压,我放到C:\ffmpeg-7.0-essentials_build\进入系统环境变量设置:将…