nlm-ingestor:RAG基于规则的开源PDF解析器
内容提要
此存储库包含多种文件格式的自定义解析器,包括PDF、HTML、DOCX、PPTX等。基于规则的解析器比基于视觉模型的解析器更快且实用。PDF解析器具有章节和段落提取、表格识别、去除重复页眉页脚等功能。使用Tika进行文档解析,可与llmsherpa LayoutPDFReader结合使用。与Azure文档智能相比,此解析器速度快且成本低。
延伸解读
规则解析器与视觉解析器的适用场景
文章指出,基于规则的解析器比视觉解析器快100倍,因为视觉解析器需要为每一页生成图像,即使页面已有文本层。对于没有文本层的扫描PDF或包含表单数据的小型PDF,视觉解析器更合适;但对于数百页的大文本层PDF,基于规则的解析器更实用。此外,规则解析器无需特殊硬件,甚至可在2000年代初的硬件上运行。
PDF解析器的核心功能与OCR选项
该PDF解析器基于规则,利用修改版Tika提取文本坐标、图形和字体数据。它支持章节和小节级别、段落合并、表格识别、列表和嵌套列表、跨页面内容连接、去除重复页眉页脚和水印。通过apply_ocr选项,可对扫描页面自动使用OCR,底层基于Tesseract。这些功能有助于生成结构化的文档块,适合RAG应用。
与Azure文档智能的对比
文章提到,与Azure文档智能等云解析器不同,nlm-ingestor采用基于规则的方法。大多数云解析器使用视觉模型,速度慢、成本高,且需要在它们之上编写额外代码来提取好的块。而nlm-ingestor速度快、成本低,适合大规模文档处理,但可能不适用于所有场景,例如无文本层的扫描文档。
安装与使用注意事项
要使用PDF解析器,需安装最新版本的Java,并运行修改版的Tika服务器(tika-server-standard-nlm-modified-2.4.1_v6.jar)。然后通过pip安装nlm-ingestor,并运行摄取器守护进程。文章建议与llmsherpa LayoutPDFReader结合使用,以获得最佳的LLM/RAG块。用户可参考存储库中的示例和笔记本进行实验。
Q&A
nlm-ingestor 是什么?它支持哪些文件格式?
nlm-ingestor 是一个包含多种文件格式自定义解析器的存储库,专为 RAG(检索增强生成)设计。它支持 PDF、HTML、DOCX、PPTX 以及 Apache Tika 支持的任何其他格式。
为什么选择基于规则的解析器而不是基于视觉模型的解析器?
基于规则的解析器比基于视觉模型的解析器速度快 100 倍,因为视觉解析器需要为所有页面(即使有文本层)创建图像。对于跨越数百页的大文本层 PDF,基于规则的解析器更实用。此外,视觉解析器容易出错,修复模型错误可能降低之前学习的准确性。
PDF 解析器有哪些主要功能?
PDF 解析器的主要功能包括:提取章节和小节及其级别、组合行成段落、建立章节和段落之间的链接、识别表格及其所在部分、处理列表和嵌套列表、连接跨页面内容、删除重复页眉页脚、去除水印,以及带边界框的 OCR。
如何安装和运行 nlm-ingestor 的 PDF 解析器?
安装步骤:1. 从 Oracle 官网安装最新版本的 Java;2. 运行 Tika 服务器:java -jar <path_to_nlm_ingestor>/jars/tika-server-standard-nlm-modified-2.4.1_v6.jar;3. 安装摄取器:pip install nlm-ingestor;4. 运行摄取器:python -m nlm_ingestor.ingestion_daemon。
nlm-ingestor 如何处理扫描页面?
PDF 解析器提供 OCR 选项(apply_ocr),当 PDF 中有扫描页面时自动使用 OCR。OCR 功能基于 tika 的 nlmatics 修改版本,底层使用 tesseract。
nlm-ingestor 与 Azure 文档智能相比有什么优势?
与 Azure 文档智能相比,nlm-ingestor 速度快且成本低,适合大规模文档处理。大多数云解析器使用视觉模型,速度慢、成本高,并且需要在它们之上编写代码来提取好的块。
nlm-ingestor 如何与 llmsherpa LayoutPDFReader 结合使用?
可以将 nlm-ingestor 服务器与 llmsherpa LayoutPDFReader 结合使用,为 LLM/RAG 项目获取最佳块。具体示例和笔记本可在 llmsherpa 的 GitHub 仓库中查看。