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.documentmd_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 内容:
一级标题:2026 上半年业务收益统计表 合并单元格财务表格(跨 3 列表头) 利润率计算公式:ProfitRate=IncomeIncome−Cost×100% 分页明细数据、扫描手写备注
输出 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私有化模型
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:50080timeout: 30000spring:ai:vectorstore:redis:dimensions: 1536
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.上传文件接口
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 传统文档解析/在线工具选型对比
五、企业分级落地路线(适配前文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/doclingPython一键安装命令:
pip install docling# 中文扫描件OCR完整版pip install docling[ocr-chinese]
Docker服务启动镜像:ds4sd/docling-serve:latest
夜雨聆风