kotaemon 如何安装 Docling 并启用表格与图表提取?
【免费下载链接】kotaemonAn open-source RAG-based tool for chatting with your documents.项目地址: https://gitcode.com/GitHub_Trending/kot/kotaemon
当你的文档里有大量表格和插图,而 kotaemon 默认的 PDF 解析方式无法把它们结构化成可问答的内容时,可以启用 kotaemon 内置的 Docling 读取器(reader)。它基于开源的 Docling 在本地做结构感知解析,支持文本、表格和图表(figure)三类内容。完成后,你在上传文档索引时,kotaemon 会用 Docling 解析文件,并把提取出的文本、Markdown 表格和图表分别转成Document对象进入索引。下面给出安装和启用的完整操作路径。
准备条件
Docling 是 kotaemon 核心库的一个可选依赖(extra),不是默认安装的,需要在你自己的 Python 环境里单独安装,适用于源码方式运行的部署。先按 README.md 中的 “Without Docker” 部分搭好环境:
- 克隆仓库并进入
kotaemon目录; - 用 uv(推荐)或 conda 完成基础环境,要求 Python >= 3.10:
uv sync --python 3.10 source .venv/bin/activate- 在项目根目录创建
.env文件,可用.env.example作为模板。
安装 Docling 读取器
在仓库根目录执行:
uv pip install -e "libs/kotaemon[docling]"这条命令以可编辑方式重新安装libs/kotaemon并带上docling这个可选依赖。安装的内容是docling<=2.5.2,见 pyproject.toml 中的[project.optional-dependencies] docling = ["docling<=2.5.2"]。
对应实现位于 docling_loader.py 的DoclingReader。它声明了_dependencies = ["docling"];如果依赖缺失,实例化转换时会抛出明确的错误:ImportError: Please install docling: 'pip install docling'。所以如果索引时报这个错,说明上一步的安装没有成功。
可选:配置 VLM 端点生成图表说明文字
Docling 在本地就能提取文本、表格和图表元数据,但“为图表生成说明文字(figure caption)”需要额外的视觉语言模型(VLM)端点。
如果你希望图表带上生成的 caption,在项目根目录的.env或应用设置中配置KH_VLM_ENDPOINT:
KH_VLM_ENDPOINT=http://your-vlm-endpointhttp://your-vlm-endpoint是文档中的示例值,需要替换为你自己的 VLM 服务地址。KH_VLM_ENDPOINT会在启动时注入到 Docling 读取器的vlm_endpoint参数中,见 files.py:
docling_reader = DoclingReader() adobe_reader.vlm_endpoint = ( azure_reader.vlm_endpoint ) = docling_reader.vlm_endpoint = getattr(flowsettings, "KH_VLM_ENDPOINT", "")如果不设置KH_VLM_ENDPOINT,Docling 仍会提取文本、表格和图表元数据,只是跳过生成的图表说明文字。也就是说,启用表格提取不依赖 VLM 端点,VLM 端点只影响图表 caption。
另外两个与图表处理相关的参数(见 docling_loader.py):
max_figure_to_caption:默认 100,表示最多为多少张图表生成说明文字,超出部分按“无 caption”入库;figure_friendly_filetypes:默认[".pdf", ".jpeg", ".jpg", ".png", ".bmp", ".tiff", ".heif", ".tif"],只有这些文件类型的图表才做视觉裁剪和 caption 生成;.docx、.html等文件因不同工具下的版面可能不一致,不做图表提取。
在应用中启用 Docling 文件加载器
安装完成后,在 UI 里把文件加载器切换为 Docling:
- 运行 kotaemon 并打开应用 UI(源码方式下执行
python app.py,默认用户名和密码均为admin); - 进入Settings → Retrieval Settings → File loader;
- 在下拉框中选择
Docling (figure+table extraction); - 保存设置,然后上传或索引文档。索引阶段 kotaemon 会调用 Docling 解析文件,并把提取内容转成
Document对象。
这个下拉选项由 pipelines.py 中的reader_mode配置提供,其中("Docling (figure+table extraction)", "docling")对应 Docling。选择后,.pdf文件的解析器会被替换为 Docling 读取器:
elif self.reader_mode == "docling": readers[".pdf"] = docling_reader也就是说,在 Docling 模式下,PDF 走 Docling 解析,其余文件类型仍按默认提取器处理。
解析结果包含什么
DoclingReader的load_data方法(docling_loader.py)把一次解析结果组织成三类Document:
- 文本:按页归并的纯文本,元数据带
page_label、file_name、file_path; - 表格:Docling 的表格网格被转成 Markdown 表格,并拼上文档中抽取到的表格标题(extractive caption),元数据中
type: "table"、table_origin保存 Markdown 原文; - 图表:按页面上记录的坐标从原文件中裁剪出图片,转成 base64 存入
image_origin,caption 由文档内抽取的说明文字和(若配置了 VLM)生成的说明文字拼接而成,元数据中type: "image"。
索引完成后,这些内容作为普通文档参与问答,可以在聊天中针对表格和图表提问并看到对应的引用。
限制与注意
KH_VLM_ENDPOINT未设置时只影响图表的生成式 caption,不影响文本、表格和图表元数据提取;- 图表提取只对
figure_friendly_filetypes列出的文件类型生效(.pdf、常见图片格式等),.docx、.html等不参与图表提取; - 超出
max_figure_to_caption(默认 100)的图表不再生成 caption,但内容仍会入库; - Docling 读取器在 Docling 模式下仅接管
.pdf的解析,其他扩展名仍走默认提取器。
更多多模态解析的替代方案(Adobe、Azure AI Document Intelligence、PaddleOCR)及加载器选择入口,见 README.md 的 “Setup multimodal document parsing” 小节和 integrations/docling.md。
【免费下载链接】kotaemonAn open-source RAG-based tool for chatting with your documents.项目地址: https://gitcode.com/GitHub_Trending/kot/kotaemon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考