☰
超越 AnyDoc!纯 Go 文档解析库 docling 完全开源,20 种格式统一解析,CAD、GLB 也能读给 AI
2026/10/21 2:31:46 网站建设 项目流程

docling 完全开源!纯 Go 实现、MIT 许可。20 种输入格式统一解析,可直接嵌入 Go 服务;PDF、Office、CAD、GLB 都能接进来,输入范围包含 Docling JSON 专用回读。

AnyDoc 聚焦办公文档转 Markdown;我们把 CAD 拆图、GLB 属性提取也接了进来!统一导出 Markdown、HTML、Docling JSON、content_list,并提供知识库分块接口,让图名、文字、模型属性和来源继续交给 AI 与知识库。

项目地址:https://github.com/unitedrhino/docling

表格里的数值,图表里也能读

先看一份 Excel。它有月度数据,也有折线图。只提取一段文字,当然不够:想让 AI 比较销量,得把数值交给它。

仓库构造样例:1 月 120、2 月 186、3 月 154;下方为 v1.5.0 实际解析出的图表数据。

docling 会读取 Office 原生图表的系列、类别和缓存数据;Excel 图表还可以结合引用的单元格区域取数。图表中的数据因此能组织成可检索的表格,继续比较、计算。

图表里的数值也能导出来,AI 接着比较、计算,就有了具体依据!缺失单元格会保留空位;图片里的图表需要视觉识别,走的是另一条路径。

Word、PPT 也有原生图表处理。批注、脚注、修订记录、PPT 备注、Excel 原始公式,以及可转成 LaTeX 的 Word 原生公式,都有对应处理。仓库还放了微软 Open XML SDK 的真实测试文件,想看六个图表的 Word、三维饼图的 PPT,可以直接下载运行。

先拿一份文件跑起来

装好 docling CLI,先转一份资料,就能判断它适不适合自己的文件。开发者需要Go 1.25 或以上,安装只需一行:

goinstallgithub.com/unitedrhino/docling/cmd/docling@v1.5.0

看 PDF 的结构,或者把 Excel 导出为 Markdown:

docling parse 报告.pdf--formatoutline docling parse 设备清单.xlsx--formatmd

在终端看结果就能开始核对。想把解析嵌入 Go 服务,文末有完整main.go;想在 WorkBuddy 里让 AI 调用,后面也有联犀 CLI 的一行安装命令。

PDF:文字之外,还要保留来源

再看 PDF。文字、线条、图片往往分开存放;一张表在底层可能只是坐标,双栏正文也未必按阅读顺序排列。

docling 会处理文字与坐标、字体映射、标题、表格和内嵌图片,也有多栏排序、跨页表格的处理路径。下面是仓库中一份 196 页公开论文的首页局部与解析节选:

上方为公开论文首页局部,下方为解析后的标题与作者信息节选;该图展示首页效果。

内容进入统一文档结构后,可以导出 Markdown,并保留页码、位置等来源信息。知识库查到一条要求,审阅的人能回到对应页面核对,才好决定该不该采用。

复杂版面、特殊字体和扫描页仍要检查解析结果。后面介绍的 OCR 和视觉模型入口,可以用于增强这类页面。

CAD 图纸,也能走这个入口

这次我们特别想把 CAD 带进来。设备说明书能进知识库,工程图里的设计说明和材料文字,也值得有同样的入口。

从docling v1.4.0起,联犀的 go-cad 已集成进来,支持 DWG、DXF、DXFB。go-cad 读取 DWG R9~R2018 容器,处理 CAD 文本和中文编码,识别图框;docling 把每个识别到的图框组织成一页。

go-cad 的四图幅 DXF 构造示例:先看整张图的图幅排列。

其中一幅给水系统图,图框与标题栏一起保留。

拆开后,图名标题、渲染图片和框内文本一起留下。检索到设计说明时,能知道它属于哪幅图;把图纸和设备说明书放进同一套资料流程,也有了对应入口。

图纸里画成线条的字、嵌入图片里的说明需要另行识别。解析结果用于整理与核对资料,工程审核仍要结合原图。

源码地址:https://github.com/unitedrhino/go-cad

GLB:模型里的信息,也别落下

v1.5.0 又把 GLB 2.0 接了进来!文件里已有的场景、节点、父子关系、网格名称、渲染材质名称和自定义属性,可以整理为正文与内容列表。

例如模型已经写了设备编号,就可以把编号和对应节点一起留下。每个对象保留索引来源,如#/nodes/1;重名节点可以据此区分,大整数属性保留原始精度。

知识库开发版预览实测,使用 OrientationTest 标准模型;支持旋转、缩放和平移,相关代码已接入,待部署上线。

现在用 docling CLI,就能先把模型中的已有信息导出来:

docling parse 设备.glb--formatmd docling parse 设备.glb--formatcontent-list--outmodel.json

模型里写了什么,打开输出就能核对。这些名称和属性,终于有机会和说明书一起被检索到。

这条路径读取结构与已有属性:docling 自身不渲染三维几何,预览由前端完成;不会凭外观推测尺寸、材料或设备清单。STEP、IFC 目前尚未接入。

在 WorkBuddy 里,让 AI 接着分析

联犀 CLI 已支持文档解析和 CAD,安装 Skills 后,可以在 WorkBuddy/CodeBuddy 中让 AI 调用。首次安装 CLI(Linux/macOS),一行命令:

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

已有 CLI 的用户先升级,再安装 Skills:

ur upgrade ur skillsinstall--dir~/.codebuddy/skills ur skills status

重启 WorkBuddy 会话,让它加载 Skills。把资料放进可访问的工作目录,可以这样给任务:

用联犀 CLI 读取工作目录里的说明书.pdf、设备清单.xlsx 和施工图.dwg。整理设备型号、数量与设计要求,注明对应文档、页码或图名;列出资料中写法不一致的地方,没有写明的信息单独列出。

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

工具读资料,AI 整理问题,人拿着来源核对。工作可以从手头的一份说明书、一张施工图开始。自己先查看图纸结构和正文,也只需:

ur doc parse 施工图.dwg--formatoutline ur doc parse 施工图.dwg--formatmd--out施工图.md

联犀 CLI 的 GLB 支持已合入主线,尚未发布新版二进制;试 GLB 请使用前面的 docling CLI 或 Go API。

知识库接着用

解析之后,docling 还提供层级分块、混合分块和知识库分块能力,可以按章节组织内容、限制块长度、拆分大表格。

处理流程示意:docling 解析与分块,知识库接着完成嵌入、索引与检索。

已有解析结果doc时,可以这样生成检索分块:

// 将已解析的文档转成内容列表,再生成检索分块。items:=docling.ToContentList(doc,docling.SourceGolight)chunks:=docling.ChunkContentList(items,docling.ContentChunkOptions{})

把文件名、章节、页码、图名或模型对象来源一起保存。问答结果里出现一句设计要求,就能带着来源回查;资料多了,也有办法追到原件。

纯 Go 的部署方式与当前边界

部署方式

对 Go 服务来说,docling 是普通模块,基础解析和内容组织在进程内完成,随应用一起构建、部署。让 Go 项目更容易把文档能力接进去,是我们坚持纯 Go 实现的理由。

支持范围

Word、PPT、Excel 支持.docx、.pptx、.xlsx,旧二进制.doc、.ppt、.xls不在当前范围内。

SVG 可读取文本节点、标题与描述;纯图形的文字识别需要 OCR。

DoclingDocument JSON 通过ParseDoclingDocument回读,扩展名入口ParseByExt不解析任意 JSON。

输出用途

Markdown 便于 AI 阅读与人工核对;HTML 用于展示;Docling JSON 保存完整文档结构;content_list便于筛选条目和入库。

CLI 的outline用于查看结构目录,分块 API 用于生成检索条目。

模型增强

文本型文档和 Office 原生结构优先规则解析。扫描件、图片表格、公式密集页等,可通过OCRHook、PDFVisualHook配置模型增强。

模型可用自部署服务或兼容接口,位置、费用和效果取决于配置;未配置 OCR 的扫描件不会自动产出文字。

项目说明

这里介绍的是联犀的 Go docling,文档模型参考 Docling Core 协议。它与 Python Docling 有不同的工程取舍,协议兼容不代表所有解析能力相同。

项目 README 保留了两项历史 PDF 基准,均为文本型文件的 Go 规则解析,未启用 OCR 或模型推理:

PDF 样本Go 规则解析耗时
141KB、10 页学术论文0.31 秒
1.2MB、图文混排技术书稿0.73 秒

这些数据只对应原测试条件。换机器、换版式,需要重新测;复杂资料仍要检查内容、顺序和来源。

本篇使用 v1.5.0 运行了 PDF、Word、PPT、Excel、CAD 和 GLB 样例。仓库还保留了源文件、期望输出与结构测试,欢迎拿自己的资料对照检查。

嵌入 Go 服务,完整示例在这里

创建目录并安装模块:

go mod init docling-demo go get github.com/unitedrhino/docling@v1.5.0

下面的main.go按参数读文件,输出 Markdown、Docling JSON、内容列表,并统计检索分块:

// main.go 演示统一解析、文档导出与知识库分块。packagemainimport("encoding/json""fmt""os""github.com/unitedrhino/docling")// check 在读取或导出失败时终止示例,避免继续使用无效结果。funccheck(errerror){iferr!=nil{panic(err)}}// writeJSON 将指定结构保存为可检查的 JSON 文件。funcwriteJSON(namestring,value any){// raw 保存带缩进的 JSON 字节,便于直接检查。raw,err:=json.MarshalIndent(value,""," ")check(err)check(os.WriteFile(name,raw,0644))}// main 读取命令行指定的文件,在当前目录输出解析结果。funcmain(){iflen(os.Args)!=2{fmt.Println("用法:go run . <文档路径>")os.Exit(2)}// data 为文件字节,doc 为统一的解析结果。data,err:=os.ReadFile(os.Args[1])check(err)doc,err:=docling.ParseByExt(os.Args[1],data)check(err)check(os.WriteFile("document.md",[]byte(doc.ToMarkdown()),0644))writeJSON("document.json",doc)// items 保留内容条目,chunks 用于后续检索入库。items:=docling.ToContentList(doc,docling.SourceGolight)writeJSON("content-list.json",items)chunks:=docling.ChunkContentList(items,docling.ContentChunkOptions{})fmt.Printf("内容条目:%d,检索分块:%d\n",len(items),len(chunks))}

运行时指定文件:

go run.说明书.pdf

换成.docx、.xlsx、.dwg或.glb,仍使用这份示例。先打开document.md检查内容,再查看 JSON 中的来源信息。

规约更新,找到该检查的位置!

企业资料要用起来,来源和引用就得连起来!联犀知识库已接入 docling,CAD 图纸、GLB 模型也能入库。

能力示意:建立字段引用后定位文档与位置,由人员核对修订。

检索和 AI 整理的内容可以回查原文;公式、参数可建立到行业规约的字段引用。规约更新后,沿引用找到需要核对的文档与位置,再修订。来体验联犀知识库,让资料之间的联系用起来!

实景:AI 整理内容与原文来源一起保留。

实景:语义关联展示两侧原文与判断依据。

能把这套纯 Go 的文档能力开源出来,我们很开心,也期待大家拿真实文件来打磨它!做 AI 应用、工程资料管理或知识库的朋友,拿手头那份最难整理的资料试一次。把具体问题和样本带到 GitHub Issue,我们一起把它读得更好。

觉得有用,欢迎给 docling 一个 Star,也把这条接入路径分享给正在处理资料的同事。

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

欢迎关注我们的开源项目

联犀 things · Go 物联网开源模块

提供设备接入、物模型、设备数据与 OTA 等基础能力。本文介绍的完整 AI 平台能力,不等于该仓库的开源范围。

https://gitee.com/unitedrhino/things

欢迎点亮 Star,也欢迎关注联犀,持续分享AI+物联网的开发进展、开源实践与应用案例!

历史阅读

  • 推荐一个 AIoT 物联网平台:免费商用,还能做自己的 SaaS
  • 每月电费花在哪?这套智慧能源管理平台,3D数字孪生看能耗,AI查数据、辅助配置告警
  • 别再一笔笔画了!WorkBuddy 几分钟搞定配电室组态:CAD 一次图、2D 和 3D
  • 纯 Go 的 CAD 解析库 go-cad,开源啦,dwg/dxf格式直接解析
  • JEV 火了,物联网怎么用?附开源方案部署与测试
  • AI 时代的真万物互联:人和多个 AI Agent 如何通过设备通道与外部渠道协作
  • 做物联网项目,不必先买平台授权:联犀私有化部署永久免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询