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

server/2024/9/24 23:25:06/
html" title=xml>xmlns="http://www.w3.org/2000/svg" style="display: none;">

文章目录

  • 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 html" title=pdf>pdfminer.six       # 新建 html" title=pdf>pdfminer.six 工具测试目录 `python_samples/test_html" title=pdf>pdfminer_six`
    python3 tools.py new html" title=pdf>pdfminer.six html  # 新建 html" title=pdf>pdfminer.six 工具的转换为 HTML 的测试文件 `python_samples/test_html" title=pdf>pdfminer_six/to_html.py`
    
  2. 测试新工具的时候只需要重写新生成的测试文件的 convert_html" title=pdf>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 html" title=pdf>pdfminer.six       # 测试 html" title=pdf>pdfminer.six 工具下的所有格式转换文件
    python3 tools.py test html" title=pdf>pdfminer.six html  # 测试 html" title=pdf>pdfminer.six 工具的转换为 HTML 的测试文件
    

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

测试输出:输出的文件在当前测评的工具的文件夹下,并被命名为 to_{format}_{html" title=pdf>pdf_name}.{format}。例如 html" title=pdf>pdfminer.six 工具样例的输出,放到 python_samples/test_html" title=pdf>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格式。以下是其中一些:

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

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


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


http://www.ppmy.cn/server/29881.html

相关文章

构建矿业企业数字化未来:核心架构与落地策略

随着数字化时代的到来,矿业企业正面临着前所未有的机遇与挑战。在这个充满变革的时代,构建一个稳固的数字化核心架构并将其有效落地成为了矿业企业持续发展的关键。本文将深入探讨矿业企业数字化核心架构的构建和落地策略,助您在数字化转型的…

PHP的数组练习实验

实 验 目 的 掌握索引和关联数组,以及下标和元素概念; 掌握数组创建、初始化,以及元素添加、删除、修改操作; 掌握foreach作用、语法、执行过程和使用; 能应用数组输出表格和数据。 任务1:使用一维索引数…

SQLite如何处理CSV 虚拟表(三十七)

返回:SQLite—系列文章目录 上一篇:SQLite的DBSTAT 虚拟表(三十六) 下一篇:SQLite的扩展函数Carray()表值函数(三十八) ​ RFC4180格式是一种文本文件格式,被用于表格数据间的交互,也可将表格数据转化…

Mybatis高级

1. Mybatis多表查询概念 ​ 在学习多表查询的之前,我们要先明确多表的关系都有哪些,如何划分。 1.1 多表关系的划分 一对一 一对一的关系是两张表之间 A表的一条数据只能对应B表的一条数据。比如 订单表和用户表 一个订单只能属于…

【Node.js工程师养成计划】之express框架

一、Express 官网:http://www.expressjs.com.cn express 是一个基于内置核心 http 模块的,一个第三方的包,专注于 web 服务器的构建。 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用&…

CogAgent:开创性的VLM在GUI理解和自动化任务中的突破

尽管LLMs如ChatGPT在撰写电子邮件等任务上能够提供帮助,它们在理解和与GUIs交互方面存在挑战,这限制了它们在提高自动化水平方面的潜力。数字世界中的自主代理是许多现代人梦寐以求的理想助手。这些代理能够根据用户输入的任务描述自动完成如在线预订票务…

SQL 基础 | AS 的用法介绍

SQL(Structured Query Language)是一种用于管理和操作数据库的标准编程语言。 在SQL中,AS关键字有几种不同的用法,主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法: 重命名列:在SELECT语句中&a…

【跟马少平老师学AI】-【神经网络是怎么实现的】(八)循环神经网络

一句话归纳: 1)词向量与句子向量的循环神经网络: x(i)为词向量。h(i)为含前i个词信息的向量。h(t)为句向量。 2)循环神经网络的局部。 每个子网络都是标准的全连接神经网络。 3)对句向量增加全连接层和激活函数。 每个…