夜雨聆风学习资料网

ARTICLE · 1214476

纯 Go 文档解析库 docling 完全开源!PDF、Office、电子书、CAD、GLB 都能读给 AI

纯 Go 文档解析库 docling 完全开源!PDF、Office、电子书、CAD、GLB 都能读给 AI

⬆️ 关注 联犀,最及时最干货的 AI + IoT 分享

GitHub 项目地址见文末

纯 Go 实现、MIT 开源、无需 cgo。docling,让资料接上 AI!

做知识库,拿到的资料很少只有一种格式:说明书、报表、培训电子书、软件手册,工程项目里还有 CAD 图纸和三维模型。先把内容读出来,AI 才有材料去整理要求、比较数据、查找依据。

联犀开源的 Go 文档解析库 docling,把这些入口接在一起。这次又补上 新增 DOC · XLS · EPUB · CHM:DOC、XLS 对应旧版 Office,EPUB 是电子书,CHM 是帮助手册,各有自己的使用场景。

下面把完整输入输出、真实样本效果和上手方法放在一起。拿手头的资料,就能对照着试!

现在,哪些文件可以读?

PDF 与办公文档: PDF;Word 的 DOC · 新增、DOCX;PowerPoint 的 PPTX。

表格与数据: Excel 的 XLS · 新增(Excel 97–2003 BIFF8)、XLSX,以及 CSV。

电子书与帮助文件:EPUB · 新增、CHM · 新增。按电子书声明的阅读顺序,或帮助文件的目录主题页组织内容。

网页、邮件与文本: HTML(.html / .htm)、Markdown(.md / .markdown)、AsciiDoc(.adoc / .asciidoc)、EML 邮件、TXT 纯文本。

图片与 SVG: PNG、JPEG(.jpg / .jpeg)、BMP、WEBP、SVG。栅格图片中的文字需要配置 OCR;SVG 可以读取已有文本、标题和描述。

CAD 图纸: DWG(R9~R2018)、ASCII / 二进制 DXF(.dxf / .dxfb),支持按识别到的图框拆页。

三维模型: GLB 2.0,读取场景、节点、网格、渲染材质名称和文件已有的自定义属性。

专用结构回读: DoclingDocument JSON,通过 ParseDoclingDocument 读取已有的结构化文档;这个入口不解析任意业务 JSON。

这些格式汇入同一个 DoclingDocument 文档模型,业务侧可以围绕同一套结构继续处理,把提取出的文字、表格和来源接进自己的工作流。

解析之后,能拿到什么?

Markdown: 适合人工阅读、AI 整理与内容检索,把已识别的标题、列表、表格组织出来。

HTML: 用于网页展示,可通过 Go API 的 ToHTML 导出。

DoclingDocument JSON: 保存已提取的正文、表格及结构信息,也保留解析器能提供的页码、位置或对象索引等来源,便于业务系统继续处理。

content_list JSON: 将文档展平为内容条目,保留类型、层级等元数据,适合筛选、切片和知识库索引。

另外,CLI 默认提供 Outline 结构目录,方便先看章节、工作表和对象清单;Go API 还提供纯文本提取、层级分块、混合分块和知识库分块。它们是配套视图与处理能力,和前面的四种文档导出分开使用。

解析、分块之后,嵌入、索引和检索由知识库接着完成。 先检查内容和来源,再交给 AI,后面的问答才有依据。

Excel 里的图表,数值也能带出来

先看一份 XLSX:工作表有月度数据,也有原生折线图。想让 AI 比较变化,图表里的数值必须读得出来。

仓库 rich-chart.xlsx 构造样例;上方是原始图表局部,下方为 docling v1.6.2 本次实际解析的图表数据。

1 月 120、2 月 186、3 月 154,三个值进入了表格。 原生图表的类别、系列和缓存数据,可以继续交给 AI 分析;图片中的图表则需要另配视觉识别。

这轮还跑了微软 Open XML SDK 的 DOCX 图表和 PPTX 三维饼图测试文件,图表数据同样进入了 Markdown 表格。数值展示和业务计算口径,仍要结合原件核对。

DOC、XLS:把旧版 Office 也接上

DOC 现在可以直接提取段落和表格单元格里的文字,不必先转成 DOCX。

Apache POI 的 simple-table.doc 样本里有一个两行三列的表格,本次读到了六个单元格的文字,以及表格后的正文。DOC 这条路径侧重文字提取,表格行列会被压平,图片、完整版式和标题层级不作完整还原。

XLS 则保留工作表分组与单元格表格结构。下面是 Apache POI 的真实测试文件:

本次 v1.6.2 输出节选:上表为 15375.xls 的前四列,日期来自 DateFormats.xls。

样本中的 5% 保持百分比显示;不同显示样式对应的同一天,统一成 2007-08-10。Sheet1、Sheet2、Sheet3 的顺序也保留下来。

XLS 公式使用文件保存的缓存结果,不重新计算。 常见内置百分比和日期样式有对应处理,自定义数字格式不完整模拟;缓存过旧或缺失时,需要回表格软件核对。更早的 Excel 版本不在这轮支持范围内。

EPUB、CHM:电子书和帮助手册,按顺序读

EPUB 里有章节、导航和阅读顺序。docling 按文件声明的阅读顺序组织内容,适合接着整理培训资料、技术书籍或章节术语。

CHM 常见于 Windows 软件帮助和开发手册。这次接入后,会按目录组织主题页,提取 HTML 正文中的标题、列表和文字。

上方为 W3C EPUB 测试样本,下方为 pylibmspack 提供的 NSIS 帮助手册;均为本次实际解析结果节选。

W3C 样本中的两个导航链接内容与后续正文保持先后关系;NSIS 手册的主题标题和正文也进入了输出。一本资料、一份帮助手册,都可以接上同一套内容整理流程。

电子书阅读器、CHM 原文件预览不在本轮功能内;部分 HTML 内容会被过滤,提取结果需要和原件对照。

PDF、CAD、GLB:工程资料也有入口

PDF:先把内容和来源留下。 本次解析了一份 10 页 GoHotDraw 公开论文,提取到论文标题、作者及正文。双栏页面中,也发现了部分标题和正文混接的情况;复杂排版要核对阅读顺序,扫描件和图片文字需要配置 OCR 或视觉增强。

CAD:按图框整理,知道文字属于哪幅图。 DWG、DXF 通过集成的 go-cad 处理图框、文字及渲染图,再进入统一文档结构。

GLB:把模型里已有的信息读出来。 场景、节点父子关系、网格名称、渲染材质与已有属性,可以组织成可检索内容;对象索引便于区分重名节点。

上方为仓库双图框 DXF 构造样例,解析为两页并保留各自文字;下方为 OrientationTest 标准模型的已有结构信息。模型来源:Khronos 测试资产,Ed Mackey / AGI,CC BY 4.0。

这里的 GLB 样本读到 1 个场景、13 个节点、13 个网格、7 个渲染材质,还保留了 #/nodes/0 这样的对象来源。docling 本身不渲染三维几何,也不会从外观推测尺寸、工程材料或设备清单。

CAD 的线条字、嵌入图片文字仍需另行识别;STEP、IFC 尚未接入。工程核对要结合原图和原模型。

这些测试文件,大家也能拿来对照

本篇用 docling v1.6.2、ur v0.8.7 跑了 11 份代表性样本,包括真实公开文件和仓库构造样例:PDF、DOC、DOCX、XLS 与日期样本、XLSX、PPTX、EPUB、CHM、DXF、GLB。

新增四种格式在开发阶段还用 Apache Tika 的文本结果做过独立对照。DOC 表格文字被压平、XLS 日期规范化、CHM 部分 HTML 被过滤,这些差异都保留在说明里;对照工具不进入交付运行依赖。

项目的 examples 目录提供多类源文件与期望 Markdown。别只看“解析成功”,把原件与结果并排看:关键文字有没有漏,工作表和章节顺序对不对,表格还保留了什么结构。

先拿一份资料跑起来

已经安装联犀 CLI 的用户,先升级,再看支持格式:

ur upgrade
ur doc formats

同一条命令,换一个文件就能继续用:

ur doc parse 报告.pdf --format outline
ur doc parse 报表.xls --format md
ur doc parse 图纸.dxf --format content-list
ur doc parse 模型.glb --format json --out 模型.json

也可以换成 DOC、DOCX、XLSX、PPTX、EPUB、CHM 等已支持文件。先看 Outline,再按需要导出正文或 JSON,内容多时用 --out 文件名 保存。

首次安装 ur(Linux / macOS):

curl -fsSL https://doc.unitedrhino.com/cli/install.sh | bash

Go 开发者可以直接引入库(Go 1.25.3 及以上):

go get github.com/unitedrhino/docling@v1.6.2

也可单独安装 docling CLI:

go install github.com/unitedrhino/docling/cmd/docling@v1.6.2

库以 ParseByExt 为统一扩展名入口;HTML 导出、纯文本提取和分块等能力通过 Go API 使用。CLI 的导出选项为 outline、md、content-list、json。

基础解析保持纯 Go、无需 cgo,可以随 Go 服务构建部署。 扫描件、图片表格等识别任务可配置 OCRHook / PDFVisualHook,模型位置、费用与效果取决于配置。旧版 PPT、加密或损坏文件,以及尚未支持的格式,需要按范围和错误提示处理。

这里介绍的是联犀的 Go docling,文档模型参考 Docling Core 协议,与 Python Docling 的能力范围和工程取舍不同。

从一份文件,接到自己的 AI 工作流

想直接在业务中用,联犀知识库已接入 docling,解析后可以继续分块、索引、检索和来源回查;新格式接入也已完成,自部署用户需升级到包含对应能力的版本。

装好联犀 CLI 和对应 Skills 后,还可以让 WorkBuddy、CodeBuddy 等 AI 工具调用。任务可以这样交代:

读取工作目录中的说明书.doc、报表.xls、培训资料.epub 和软件手册.chm。整理维护要求、字段含义、培训要点和操作说明,注明文件及章节或工作表;缺少依据的内容单独列出。

可复制的任务示例,非 AI 实际执行记录。

把文档、电子书、图纸和模型接进同一套纯 Go 工具,我们很开心!做 AI 应用、工程交付或知识库的朋友,拿一份自己的资料试试。 把具体问题和可分享的样本带到 GitHub Issue,一起把它读得更好。

也把这篇交给正在处理资料的同事:从原文件开始,看正文、看顺序、看来源,再决定怎样接进自己的工作流。

开源地址

GitHub:https://github.com/unitedrhino/docling

源码、使用说明和 examples 测试样本都在仓库里,复制地址即可访问。

⬆️ 关注 联犀,最及时最干货的 AI + IoT 分享

往期回顾

推荐一个 AIoT 物联网平台:免费商用,还能做自己的 SaaS

每月电费花在哪?这套智慧能源管理平台,3D数字孪生看能耗,AI查数据、辅助配置告警

别再一笔笔画了!WorkBuddy 几分钟搞定配电室组态:CAD 一次图、2D 和 3D

纯 Go 的 CAD 解析库 go-cad,开源啦,dwg/dxf格式直接解析

JEV 火了,物联网怎么用?附开源方案部署与测试

纯 Go 实现的文档解析库 docling,开源了

AI 时代的真万物互联:人和多个 AI Agent 如何通过设备通道与外部渠道协作

做物联网项目,不必先买平台授权:联犀私有化部署永久免费

相关学习资料