乐于分享
好东西不私藏

Star 68k 开源文档解析神器 Docling!PDF/Word/PPT 表格、数学公式无损提取,Java 全栈 RAG 离线私有化落地

Star 68k 开源文档解析神器 Docling!PDF/Word/PPT 表格、数学公式无损提取,Java 全栈 RAG 离线私有化落地

    Star 68k Docling|全格式文档无损解析,表格/公式精准还原,附Java+Python全套实操案例

    前言

    搭建企业知识库、RAG系统最头疼三大文档痛点:

    • PDF、Word、PPT 解析后结构全丢,合并表格、数学公式变成乱码文本,检索准确度暴跌;
    • 扫描版纸质 PDF、图片文档无法提取内容,传统 OCR 排版错乱;
    • 商用在线文档解析工具需要上传合同、财报、涉密文档至第三方服务器,存在数据合规泄露风险。

      今天分享IBM开源Star 6.8k文档处理框架 docling-ai/docling,本地完全离线运行,一站式解析PDF/DOCX/PPTX/XLSX/图片,完整保留标题层级、嵌套表格、数学公式、代码块,原生对接Spring AI、DeepSeek V4私有化大模型,是2026企业RAG知识库标准ETL工具。

      核心差异化优势(对比PyPDF2、pdfplumber、在线解析工具)

      • 表格无损还原:内置 TableFormer 专用表格识别模型,支持合并单元格、跨行表头、嵌套表格,导出标准 Markdown/JSON 表格无错位;
      • 公式结构化提取:论文、合同内数学公式自动转标准 LaTeX 代码,RAG 检索可精准匹配公式语义;
      • 双栏 / 复杂布局自适应:自动区分文档阅读顺序,不会出现文字上下颠倒、段落乱序;
      • 全离线私有化:所有解析、OCR、布局识别本地完成,文档源码不流出内网,规避境外工具数据回传风险;
      • 多输出格式兼容:统一结构化 DoclingDocument 对象,一键导出 Markdown、HTML、JSON,直接送入向量库做向量化;
      • Java 友好集成:支持 Docker 部署 HTTP API 服务,Spring Boot 微服务无侵入调用,不用长期维护 Python 双栈。

        一、Docling完整核心能力一览

        1. 支持全量输入格式

        办公文档:PDF、DOCX、PPTX、XLSX图文素材:PNG/JPG/TIFF扫描件、截图PDF辅助格式:HTML、Markdown、LaTeX、CSV多媒体:MP3/WAV音频(语音转文字)

        2. 四大王牌无损解析能力

        ① 复杂表格精准提取(企业财务 / 招投标刚需)

        支持:跨列合并单元格、多行表头、分页表格、嵌套子表格、数值带单位表格;传统工具仅能提取纯文本,Docling输出标准结构化表格,可直接入库、报表生成。

        ② 数学公式自动转 LaTeX(科研、金融量化、工程文档)

        图片公式、PDF内嵌公式识别,自动包裹$$LaTeX公式$$,大模型可直接识别计算逻辑。

        ③ 扫描文档内置 OCR 引擎

        集成EasyOCR/Tesseract多引擎,中文识别优化,模糊拍照合同、纸质扫描件完整还原排版。

        ④ 文档层级完整保留

        自动识别H1-H6标题、有序/无序列表、代码块、图片注释、页眉页脚,输出Markdown完美还原原版式。

        3. 工程化配套特性

        • Docker一键部署HTTP API服务,支持批量文件上传解析;
        • 原生集成LangChain、LlamaIndex、Spring AI文档读取器;
        • 支持自定义分块规则,适配向量库RAG分片;
        • MIT开源协议,免费商用,无版权限制,适配金融、政企内网部署。

        二、基础环境快速部署(2种方式:Python本地、Docker服务化)

        方式1:Python本地快速安装

        https://github.com/docling-project/docling

        拉取源码

        git clone https://github.com/docling-project/docling.gitcd docling

        2. 一键安装依赖

        pip install docling# 如需中文OCR扫描件支持pip install docling[ocr-chinese]

        方式2:Docker部署API服务(Java微服务调用首选)

        # 拉取官方镜像docker pull ds4sd/docling-serve:latest# 启动解析服务,端口50080docker run -d -p 50080:50080 --name docling-service ds4sd/docling-serve:latest# 健康检查验证curl http://127.0.0.1:50080/health# 返回 {”status”:”healthy”} 即部署成功

        三、4套可直接复制实操案例(新增完整输入输出示例)

        案例1:Python基础解析|PDF转Markdown,提取表格+公式

        适配场景:本地批量处理合同、学术论文

        完整运行代码

        from docling.document_converter import DocumentConverter# 初始化转换器,开启OCR、表格、公式识别converter = DocumentConverter()# 可传入本地文件路径/在线论文URLsource = ”./财务收益报表.pdf”# 开启中文OCR、提取表格、识别数学公式result = converter.convert( source, enable_ocr=True, extract_tables=True, identify_formulas=True, language=”zh”)# 转换成功导出结构化Markdownif result.status == ”SUCCESS”: doc = result.document md_content = doc.export_to_markdown()# 保存文件 with open(”报表解析结果.md”, ”w”, encoding=”utf-8”) as f: f.write(md_content) print(”解析完成,表格、公式完整保存”) json_data = doc.export_to_json()

        输入文件说明

        财务收益报表.pdf 内容:

        1. 一级标题:2026 上半年业务收益统计表
        2. 合并单元格财务表格(跨 3 列表头)
        3. 利润率计算公式:ProfitRate=IncomeIncomeCost×100%
        4. 分页明细数据、扫描手写备注

        输出 Markdown 示例

          # 2026上半年业务收益统计表## 一、分区域营收汇总|区域|一季度营收|二季度营收|总收益|同比增长||----|----|----|----|----||华东区|1200万|1450万|2650万|18.6%||华南区|980万|1120万|2100万|14.3%|## 二、收益率计算公式$$ProfitRate = \frac{Income - Cost}{Income} \times 100\%$$

          效果说明

          PDF内合并单元格财务表格完整转为Markdown表格,收益率公式自动转为标准LaTeX代码块,无文字错乱、行列丢失。


          案例2:HTTP API批量解析(Shell调用+返回JSON示例)

          适配场景:后端服务批量上传文档解析

          请求命令

          curl --location --request POST 'http://127.0.0.1:50080/convert' \-F ”file=@./工程测算PPT.pptx” \-F ”enable_ocr=true” \-F ”extract_tables=true”

          API 返回 JSON 简化示例

          { ”status”: ”success”, ”document_markdown”: ”# 工程成本测算\n## 材料单价明细\n|材料|单价|用量|合计|\n|钢材|4200/吨|50吨|210000|\n$$TotalCost = \sum(Price \times Num)$$”, ”tables”: [ { ”page”: 2, ”table_data”: [[”材料”,”单价”,”用量”],[”钢材”,”4200/吨”,”50吨”]] } ], ”formulas”: [ ”$$TotalCost = \\sum(Price \\times Num)$$” ], ”file_name”: ”工程测算PPT.pptx”}

          业务系统可直接读取tables、formulas字段单独存储,用于知识库精准检索。


          案例3:Spring Boot Java全栈集成(Spring AI官方适配,附带上传&查询接口完整示例)

          企业微服务内网RAG标准方案,搭配前文JDK26+Spring Cloud AI+DeepSeek V4私有化模型

          1. Maven 依赖

          <!-- Spring AI Docling文档读取器 --><dependency>    <groupId>io.arconia</groupId>    <artifactId>arconia-ai-docling-document-reader</artifactId>    <version>0.8.0</version></dependency><!-- Spring AI向量库 --><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-redis-store-spring-boot-starter</artifactId></dependency>

          2. application.yml 配置

          arconia: ai: docling: serve: base-url: http://127.0.0.1:50080 timeout30000spring: ai: vectorstore: redis: dimensions1536

          3.文档解析入库完整 Service 代码

          @Service@Slf4jpublic class DocumentIngestService { private final DoclingDocumentReader doclingReader; private final VectorStore vectorStore; public DocumentIngestService(DoclingDocumentReader doclingReader, VectorStore vectorStore) { this.doclingReader = doclingReader; this.vectorStore = vectorStore; } /** * 上传文档自动解析、分块、写入向量库,搭建企业知识库 */ public void uploadDoc(String filePath) { // Docling无损解析文档,保留表格、公式、层级结构 List docList = doclingReader.read(new FileSystemResource(filePath)); // 批量写入向量库,用于后续RAG检索 vectorStore.add(docList); log.info(”文档{}解析完成,共生成{}条知识库分片”, filePath, docList.size()); }}

          4. 完整 Controller(上传 + 知识库问答双接口)

          @RestController@RequestMapping(”/ai/doc”)public class DocParseController { private final DocumentIngestService ingestService; private final EnterpriseRagService ragService; public DocParseController(DocumentIngestService ingestService, EnterpriseRagService ragService) { this.ingestService = ingestService; this.ragService = ragService; } // 文档上传解析入库接口 @PostMapping(”/upload”) public ResponseEntity uploadFile(@RequestParam(”file”) MultipartFile file) throws IOException { String tempPath = ”./tmp/” + file.getOriginalFilename(); file.transferTo(new File(tempPath)); ingestService.uploadDoc(tempPath); return ResponseEntity.ok(”文档解析入库完成,表格/公式已结构化”); } // 知识库问答接口示例 @PostMapping(”/query”) public ResponseEntity queryDoc(@RequestParam String question) { String answer = ragService.queryKnowledge(question); return ResponseEntity.ok(answer); }}

          接口调用示例

          1. 1.上传文件接口
          curl -X POST -F ”file=@./招投标文件.docx” http://127.0.0.1:8080/ai/doc/upload

          返回:文档解析入库完成,表格/公式已结构化

          2.问答查询接口

            curl http://127.0.0.1:8080/ai/doc/query?question=华东区上半年总收益是多少

            返回示例:

            根据2026上半年业务收益统计表,华东区一季度营收1200万,二季度营收1450万,总收益合计2650万元,同比增长18.6%。收益率计算公式:$ProfitRate = \frac{Income - Cost}{Income} \times 100%$


            案例4:完整内网RAG流水线实操(Docling+DeepSeek V4-Flash,完整问答示例)

            完整闭环流程:业务上传Word/PDF → Docling无损解析表格公式 → 自动分块向量化存入Redis向量库 → Spring AI调用本地DeepSeek V4检索问答

            @Servicepublic class EnterpriseRagService { private final ChatClient chatClient; private final VectorStore vectorStore; public EnterpriseRagService(ChatClient.Builder builder, VectorStore vectorStore) { this.vectorStore = vectorStore; // 全局自动RAG,检索企业解析后的结构化文档 this.chatClient = builder.defaultAdvisors( QuestionAnswerAdvisor.builder(vectorStore) .searchRequest(SearchRequest.builder().topK(4).similarityThreshold(0.75).build()) .build() ).build(); } public String queryKnowledge(String userQuestion) { return chatClient.prompt() .system(”你是企业知识库助手,优先读取文档内表格、公式数据精准回答,不要编造信息”) .user(userQuestion) .call() .content(); }}

            提问1:各区域二季度营收分别是多少?AI回答:

            四、Docling VS 传统文档解析/在线工具选型对比

            对比维度
            Docling(本地私有化)
            在线文档解析 SaaS
            pdfplumber/PyPDF2
            表格还原能力
            完整支持合并单元格、分页表格
            部分丢失嵌套表格
            纯文本,表格彻底错位
            数学公式提取
            自动输出 LaTeX 代码
            仅图片预览,无结构化数据
            完全无法识别公式
            扫描件 OCR
            内置中文 OCR,本地离线
            必须上传原图至第三方
            不支持扫描 PDF
            数据安全
            全内网处理,文档不上传公网
            文件上传境外 / 第三方服务器,合规风险
            本地运行但解析能力弱
            Java 集成
            Docker API+Spring AI 原生适配
            无 Java 专用 SDK
            仅 Python,双栈维护成本高
            商用成本
            MIT 开源永久免费
            按文档页数计费,企业成本高
            免费但功能残缺
            RAG 适配
            输出结构化 JSON/Markdown,直接分块入库
            输出纯文本,丢失大量关键结构
            结构丢失导致检索准确率低

            五、企业分级落地路线(适配前文Java全栈安全体系)

            • 测试阶段(中小团队)
              本地 Docker 部署 Docling 服务,后端上传 PDF/Word 测试解析,验证表格、公式还原效果,搭配 OCR 处理扫描合同。
            • 研发标准化(互联网企业)
              接入 Spring Boot 文件上传接口,CI 流水线自动解析项目接口文档、需求说明书,自动入库企业知识库。
            • 私有化生产集群(金融 / 央企涉密)
              内网隔离服务器部署 Docling 集群,搭配 Ollama 离线 DeepSeek V4 模型,全程无外网出口,合同、财报、涉密方案本地闭环处理,规避 Claude Code 等境外工具数据回传漏洞。
            • 统一 AI 中台
              搭建文档解析中台,统一处理全公司办公文档、扫描档案,为客服、风控、研发多业务线提供标准化结构化文档数据。

              六、总结

              Star 6.8k开源Docling解决了传统文档解析表格乱码、公式丢失、扫描件无法识别、数据上传外网四大行业痛点,是搭建内网安全RAG知识库的底层核心工具。搭配JDK26 + Spring Cloud AI + DeepSeek V4私有化模型,Java全栈团队无需依赖Python即可完成「文档解析-向量入库-智能问答」完整业务闭环,兼顾解析精度、研发效率与数据合规安全,2026企业智能化知识库落地首选方案。

              项目开源仓库地址

              GitHub官方仓库:

              https://github.com/docling-project/docling

              Python一键安装命令:

              pip install docling# 中文扫描件OCR完整版pip install docling[ocr-chinese]

              Docker服务启动镜像:ds4sd/docling-serve:latest