解析技术调研:
技术项 源代码·官方说明 优/劣势 补充 1 VikParuchuri/marker (Star 14.9K) https://github.com/VikParuchuri/marker?tab=readme-ov-file
优点:
耗时少 精度高(有ocr·模型·加持) 缺点:
需要部署大模型(6个模型)难度大,对硬件要求高。 难以支持高并发处理场景的需求 对计算公式的识别还存在不足
经过测试发现: 官方文档很粗糙,依赖版本不明确,存在兼容问题 需要仔细比各个依赖的版本号 因为marker-pdf 针对不同版本的代码结构变化很大。 目前探索出的稳定版本: ==》注意: marker-pdf 和 pdfText版本的搭配
0.2.6 《==》0.3.7 版本不高,很多特性缺失,如果要升级,需要重新核对插件的兼容的版本号。
测试机器带不动~
2 breezedeus/Pix2Text (Star 1.7K) https://github.com/breezedeus/pix2text Examples en - Pix2Text
优点:
支持表格、图片、文本、公式,解析能力很强。 有ocr·模型版本加持。 Pix2Text V1.1 则带来了完整的版面恢复能力 缺点:
需要部署大模型(5种模型)难度大,对硬件要求高。 难以支持高并发处理场景的需求。
版面分析模型 :breezedeus/pix2text-layout (国内地址)。表格识别模型 :breezedeus/pix2text-table-rec (国内地址)。文字识别引擎 :支持 80+
种语言 ,如英文、简体中文、繁体中文、越南语 等。其中,英文 和简体中文 识别使用的是开源 OCR 工具 CnOCR ,其他语言的识别使用的是开源 OCR 工具 EasyOCR 。数学公式检测模型(MFD) :来自 CnSTD 的数学公式检测模型(MFD)。数学公式识别模型(MFR) 3 opendatalab/PDF-Extract-Kit (Star 3.7K) https://github.com/opendatalab/PDF-Extract-Kit
优点:
解析能力强(模型加持):检测->识别->...... 支持OCR-模型版本 缺陷:
需要部署大模型(5种模型)难度大,对硬件要求高。 难以支持高并发处理场景的需求。
4 lxulxu / pdf-to-markdown (Star 44) https://github.com/lxulxu/pdf-to-markdown
优点:
相比上面的模型的方式,相对简单,开源者也未多说明。 缺点:
仅支持中英文(由于PyMuPDF存在问题偶尔会出现乱码) 仅支持单栏布局 不支持页眉和页脚 不支持各种文本样式(包括颜色、加粗、斜体等)
通过PyMuPDF和PADDLE OCR提取PDF中文本、图片和表格创建markdown,基于Python 3.10 64-bit。
安装依赖
安装PaddlePaddle,参考Pip 安装-使用文档-PaddlePaddle深度学习平台
pip install -r requirements.txt
命令行参数 可通过python start.py -h
查看
例如python start.py -f samples
限制
仅支持中英文(由于PyMuPDF存在问题偶尔会出现乱码) 仅支持单栏布局 不支持页眉和页脚 不支持各种文本样式(包括颜色、加粗、斜体等) ……(其他待发现问题)
5 pymupdf4llm + pytesseract(ocr) 自定义组合模式-✅
优点:
组合模式灵活,自由度高。 pymupdf4llm转换MD时可以提取到图片 + 再借助OCR(非模型)能力,可以完整提取到文本内容 ocr可以自由选型 缺点:
表格板式读取不准确,只能提取到文本,没有格式。 OCR提取只能提取到文本,没有版式。 PDF的解析底层还是基于PyMuPDF,偶尔有乱码问题(可以通过设置编码和安装字体进行优化) PyMuPDF的高级封装版本 目前选用的是免费插件pytesseract,
还有其他基于模型的ocr能力部署难度大,暂不集成,比如:surya-ocr
最后采用:
pymupdf4llm + pytesseract(ocr) 模式,其他方案有合适条件再补充测试~