AI文档智能助理都是如何处理pdf的?
AI魔法学院
2023-09-19
分享海报

一、前言

AI盛行的当下,基于文档的本地知识库智能问答系统已经成为当下最受AI从业者欢迎的落地方式。本文旨在收集整理当下AI应用中使用较多的处理pdf的库和开源项目,喜欢的请点赞、收藏。

二、常用pdf工具

对于可编辑PDF而言,可以使用pdfminertabula(可用于表格提取)、pdfplumber等组件,对于图片型的,我们可以先获取文件里面的图片,然后使用ppstructure进行图片处理。

1. PDFminer

PDFMiner内置pdf2txt.pydumppdf.py。但是pdf2txt.pyPDF文件中提取所有文本内容。但不能识别画成图片的文本,这需要对图片特征进行识别。对于加密的PDF你需要提供一个密码才能解析,对于没有提取权限的PDF文档你得不到任何文本。

地址:https://pdfminersix.readthedocs.io

2. pdfplumber

pdfplumber库既可以按页处理 pdf ,也可以获取页面文字以及进行提取表格等操作。

地址:https://github.com/jsvine/pdfplumber

3. pypdf2

PyPDF2是一个纯Python PDF库,可以读取文档信息(标题,作者等)、写入、分割、合并PDF文档,它还可以对pdf文档进行添加水印、加密解密等。

地址:https://pythonhosted.org/PyPDF2

4. xpdf

这个文本介绍了Xpdf,一个免费的PDF浏览器和工具包。它包括文本提取器、图片转换器、HTML转换器等工具,大部分工具都是开源的。

地址:http://www.xpdfreader.com/

5. mupdf

一个轻量级的 PDFXPS 和电子书阅读器。MuPDF 包括一个软件库、命令行工具和各种平台的查看器。MuPDF 中的渲染器专为高质量抗锯齿图形而设计。它通过度量和间距准确地呈现文本,以在屏幕上再现印刷页面的外观。查看器小巧、快速,支持众多文档格式,如 PDFXPSOpenXPSCBZEPUB FictionBook 2。您可以使用移动查看器注释 PDF 文档和填写表格(此功能即将在桌面查看器上推出)。命令行工具允许您注释、编辑和将文档转换为其他格式,如 HTMLSVGPDF CBZ。您还可以编写使用 JavaScript 操作文档的脚本。该库采用可移植的 C 模块化编写,因此集成商可以根据需要添加和删除功能。此外,还有一个使用 JNI Java 库,可在 Oracle Java Android 上运行。

地址:https://mupdf.com/

6. pymupdf

PyMuPDF是支持MuPDFPython绑定。使用PyMuPDF,可以访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”。对.png”,“.jpg”,“.bmp”,“.tiff”等大约10种流行的图像格式也可以像文档一样处理。

地址:https://pypi.org/project/PyMuPDF/

7. ppstructure

PP-Structure是百度飞桨系列之PaddleOCR团队自研的智能文档分析系统,旨在帮助开发者更好的完成版面分析、表格识别等文档理解相关任务。

PP-StructureV2的主要特性如下:

•支持对图片/pdf形式的文档进行版面分析,可以划分文字、标题、表格、图片、公式等区域;•支持通用的中英文表格检测任务;•支持表格区域进行结构化识别,最终结果输出Excel文件;•支持基于多模态的关键信息抽取(Key Information ExtractionKIE)任务-语义实体识别(Semantic Entity RecognitionSER)和关系抽取(Relation ExtractionRE);•支持版面复原,即恢复为与原始图像布局一致的word或者pdf格式的文件;•支持自定义训练及python whl包调用等多种推理部署方式,简单易用;•与半自动数据标注工具PPOCRLabel打通,支持版面分析、表格识别、SER三种任务的标注。

地址:https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/ppstructure

PDF2Word

其中PDF2WordPaddleOCR社区开发者whjdark[1]基于PP-StructureV2版面分析与恢复模型实现的PDF转换Word应用程序。

地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppstructure/pdf2word/README.md

8. iText PDF

它是一个SDKSoftware Development Kit)工具,为开发者提供了更好的文档引擎、高低级编程能力和创建、编辑和增强PDF文档的能力。PDFPortable Document Format)是一种可移植的文档格式,可以在各种设备和操作系统上查看和打印。iText for Java可以提高工作流程的效率。其中使用的技术术语包括SDKPDF、文档引擎和编程能力。

iText 5官网[2],已停止维护。iText5仓库地址[3]
iText 7官网[4]iText7仓库地址[5]
iText 7
iText 5是两个不同的体系。iText 5已经暂停维护, iText 5iText 7都分为商业版和社区版
itxt7itext5对比[6]
开发文档[7]

地址:https://github.com/itext/itext7,商用时注意看一下开源协议。

9. Apache PDFBox

Apache PDFBox库是用于处理PDF文档的开源Java工具。该项目允许创建新的PDF文档,操纵现有文档以及从文档中提取内容的功能。Apache PDFBox还提供了几个命令行实用程序。

•地址:https://pdfbox.apache.org/github地址:GitHub - apache/pdfbox: Mirror of Apache PDFBox[8]•中文文档:PDFBox阅读文本[9]•示例:java解析pdf获取pdf中内容信息 - 掘金[10]

10. OpenPDF

OpenPDF[11]

OpenPDF是一个Java库,使用LGPLMPL开源许可证。可以拥有创建和编辑PDF文件。
OpenPDF
iTextLGPL/MPL开源后继产品,它基于iText 4 svn标签的一个分支。

地址:https://github.com/LibrePDF/OpenPDF

11. x-easypdf

x-easypdf[12]

x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。
简单易用,仅需一行代码,便可完成pdf的操作。是国人开源的一个基于Apache PDFBoxJAR包。

地址:https://gitee.com/xsxgit/x-easypdf

12. pdffigures2

它是一个基于Scala语言构建的工具,用于从学术文档中提取图形、标题、表格和章节标题,尤其专注于计算机科学领域的文档。

地址:https://github.com/allenai/pdffigures2

13. 其他

1.Jasper Report :是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 PDF2.Openoffice openoffice是开源软件且能在windowslinux平台下运行,可以灵活的将word或者Excel转化为PDF文档。3.freemarker[13]FreeMarker是一款模板引擎,可根据模板渲染内容生成pdf

三、 Word转换为Pdf的几种方式

利用各种Office应用进行转换

JobConverter[14] + OpenOffice[15] ,支持跨平台,免费 (一般格式实现效果还行,复杂格式容易有错位)SaveAsPDFandXPS[16] + msOfficeWord + jacob[17] ,仅支持Windows,免费 (完美保持原doc格式,效率最慢)

利用jar进行转换

poi读取doc + Jsoup格式化Html + itext生成pdf (实现最方便,效果最差,跨平台)•jdoctopdf - Dead as of 2016-02-11 Uses Apache POI to read the Word document and iText to write the PDFDocx4j[18]一个基于JAXB技术的Java库,用于处理Word docxPowerpoint pptxExcel xlsx文件。JAXBJava架构用于XML绑定的技术,它允许Java对象与XML数据之间进行转换。docxpptxxlsxMicrosoft Office套件中的文件格式,用于分别存储Word文档、Powerpoint演示文稿和Excel电子表格。该库可以帮助开发人员读取、修改和创建这些类型的文件。•docx4j-export-FO[19] ,需要依赖plutext[20],已经停止对外服务。•Spire.Doc for Java[21],收费(免费的有限制)•itext-7-pdfoffice[22] ,收费•Aspose.Words[23] ,收费(免费的有限制)

命令行及图形工具

OfficeToPDF[24]这个文本是在描述一个命令行工具,可以将Microsoft Office文档转换为PDF格式。命令行工具是一种在计算机上通过命令行界面执行操作的工具。•docx2pdf[25]这段文本介绍了如何使用Microsoft Word直接在WindowsmacOS上将docx文件转换为pdf格式。在Windows上,这是通过win32com实现的,而在macOS上,则是通过JXAJavaScript for Automation,即JS中的AppleScript)实现的。声明:上面部分内容整理自:https://mp.weixin.qq.com/s/e36JQiwKK5UaJpxgt_tajAhttps://www.cnblogs.com/imzdong/p/15765737.html

References

[1] whjdark: https://github.com/whjdark
[2] iText 5
官网: https://kb.itextpdf.com/home/it5kb
[3] iText5
仓库地址: https://github.com/itext/itextpdf
[4] iText 7
官网: https://kb.itextpdf.com/home/it7kb
[5] iText7
仓库地址: https://github.com/itext/itext7
[6] itxt7
itext5对比: https://itextpdf.com/en/products/features
[7]
开发文档: https://itextpdf.com/en/resources/api-documentation
[8] GitHub - apache/pdfbox: Mirror of Apache PDFBox: https://github.com/apache/pdfbox
[9] PDFBox
阅读文本: http://www.vue5.com/pdfbox/pdfbox_reading_text.html
[10] java
解析pdf获取pdf中内容信息 - 掘金: https://juejin.cn/post/7231795067072954429
[11] OpenPDF: https://github.com/LibrePDF/OpenPDF
[12] x-easypdf: https://gitee.com/xsxgit/x-easypdf
[13] freemarker: http://freemarker.foofun.cn/
[14] JobConverter: https://sourceforge.net/projects/jodconverter/
[15] OpenOffice: https://www.openoffice.org/download/
[16] SaveAsPDFandXPS: https://www.microsoft.com/en-us/download
[17] jacob: https://sourceforge.net/projects/jacob-project/
[18] Docx4j: https://github.com/plutext/docx4j
[19] docx4j-export-FO: https://github.com/plutext/docx4j-export-FO
[20] plutext: https://converter-eval.plutext.com/
[21] Spire.Doc for Java: https://www.e-iceblue.cn/spiredocforjavaconversion/java-convert-word-to-pdf.html
[22] itext-7-pdfoffice: https://kb.itextpdf.com/home/it7kb/installation-guidelines/installing-itext-7-pdfoffice-for-java-developers
[23] Aspose.Words: https://www.aspose.com/
[24] OfficeToPDF: https://github.com/cognidox/OfficeToPDF
[25] docx2pdf: https://github.com/AlJohri/docx2pdf

[26] https://www.cnblogs.com/imzdong/p/15765737.html

出自:https://mp.weixin.qq.com/s/W1TciuOp4FTBU09LHQYptQ

© THE END

转载请联系本网站获得授权

投稿或版权问题请加微信:skillupvip