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

28 篇文章 2 订阅
14 篇文章 30 订阅

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【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐⭐⭐⭐pdf2htmlEX)
7PyMuPDF+tqdmhttps://blog.csdn.net/qq_28505809/article/details/124147552【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐PyMuPDF+tqdm)
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/✅⭐poppdf:能转换但难以阅读,不排除是我没找到正确的使用方式
14popplerPoppler 是一个用于 PDF 文档处理的强大开源库。它提供了一系列高级功能,包括页面提取、文本提取、注释和书签处理等。Poppler - 高性能的PDF文档处理库-CSDN博客✅⭐⭐⭐⭐poppler:转换成 HTML 的效果还是非常好的,但 XML 就不太行了
15pandocpandoc input.pdf -o output.html❌【已测,失败】pandoc 不接受 pdf 这个输入。详见 【记录】Pandoc|Linux安装最新Pandoc

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


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

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python3基础学习笔记(精品).pdf》是一本关于Python3基础学习的精品教材。该教材的内容包括Python3的基本语法、数据类型、控制流程、函数的定义和使用、文件的读写等基础知识点。 首先,教材详细介绍了Python3的基本语法规则,包括变量的声明和赋值、注释的使用,以及基本的运算符和表达式。通过学习这些基本语法,可以帮助读者快速掌握编写Python3程序的基本要素。 其次,教材系统地介绍了Python3的各种数据类型,如整数、浮点数、字符串、列表、元组、集合和字典等。对于每种数据类型,都给出了详细的说明和示例代码,帮助读者更好地理解和运用这些数据类型。 此外,教材还深入讲解了Python3的控制流程,包括条件语句、循环语句和异常处理等。这些控制流程在编写程序时非常重要,通过学习这些知识,读者可以写出更具有逻辑性和灵活性的程序。 教材还介绍了Python3的函数定义和使用方法。函数是程序的基本组织单位,学会使用函数可以提高代码的复用性和可读性。教材通过讲解函数的定义、参数传递和返回值等内容,帮助读者熟练掌握函数的使用。 最后,教材还介绍了Python3文件的读写操作。文件读写是程序与外部文件进行交互的重要方式,教材提供了读取和写入文件的的示例代码,帮助读者理解和掌握文件操作的基本方法。 总之,《Python3基础学习笔记(精品).pdf》是一本内容丰富、系统性强的Python3基础学习教材。通过学习这本教材,读者能够掌握Python3基础知识,并能够用Python3编写简单的程序。这本教材对于初学者来说是一本很好的学习资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shandianchengzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值