乐于分享
好东西不私藏

如何把 Excel 交给生成式 AI

如何把 Excel 交给生成式 AI
pandas、MarkItDown、OCR 插件与 ExStruct 的适用场景比较
核心结论:没有一种工具能包办所有 Excel。只处理表格数值时用 pandas;
只想快速交给大模型阅读时用 MarkItDown;
需要识别嵌入图片时增加 OCR 或视觉模型;
需要保留合并区域、图形、图表与位置关系时,应采用 ExStruct,
并按需组合 openpyxl 与视觉模型。
一、为什么普通读取方式经常丢信息
现代 Excel 文件并不只是二维表格。新版工作簿本质上是一个压缩包,其中分别保存单元格值、公式、合并区域、图表、图形、箭头、文本框和嵌入图片等内容。
不同库只读取其中一部分。很多项目一开始使用 pandas,后来才发现图形、图表、图片和版面语义全部消失,导致大模型得到的上下文不完整,回答自然也会偏离预期。
因此,选择工具前应先明确目标:是分析数值、让大模型快速阅读、程序化保留结构,还是连图片内容也要识别。
图 1 四类方案的能力范围
二、测试文件包含哪些元素
为了观察差异,可准备一个同时包含以下内容的工作簿:
说明页:一张嵌入图片;
简单表:规则的矩形数据;
复杂报表:多个表格、空白区域和合并单元格混排;
综合页:公式、折线图、流程箭头和带文字的图形。
示例:规则表格
月份
产品
产线
产量
不良数
不良率
2026-01
部件甲
一号线
1,200
18
1.50%
2026-01
部件乙
一号线
980
10
1.02%
2026-02
部件甲
二号线
1,350
16
1.19%
2026-02
部件乙
二号线
1,020
15
1.47%
三、pandas:适合数值分析,不适合保留版面
pandas 的优势是成熟、稳定、处理表格数据非常方便。读取整个工作簿时,可以按工作表返回多个数据框,特别适合统计、清洗、筛选、聚合和模型训练。
import pandas as pd

sheets = pd.read_excel("sample.xlsx", sheet_name=None, engine="openpyxl")
主要限制:
只能可靠获得单元格形成的二维数据;
合并单元格通常只在左上角保留值,原有版面语义被削弱;
图片、图形、箭头和图表不会进入数据框;
重新写出工作簿时,也无法自动恢复这些对象。
因此,目标只是“把 Excel 数值作为表格处理”时,pandas 足够;目标是理解报告版式或读取图形含义时,它并不合适。
四、MarkItDown:轻量、适合直接喂给大模型
MarkItDown 的定位是把办公文件转换成 Markdown,让大模型更容易读取。对于 Excel,它通常按工作表生成 Markdown 表格,输出简洁,适合检索增强生成、问答和快速摘要。
from markitdown import MarkItDown

text = MarkItDown().convert("sample.xlsx").text_content
但其 Excel 路径本质上仍依赖表格读取,再转换为网页表格和 Markdown,因此不会读取图表目录、绘图对象目录或媒体目录。结果是:
单元格文字能保留;
图片会消失;
图形中的文字会消失;
图表标题、系列名称和布局信息会消失。
适用场景是:工作簿以规则表格为主,只需要快速转换为大模型可读文本,不要求复原原始版面。
五、OCR 插件:能读图片,但仍读不到图形和图表
给 MarkItDown 增加 OCR 或视觉模型插件后,可以把工作表中的栅格图片提取出来,再交给兼容接口的视觉模型识别。这样,扫描件、截图或图片中的文字可以进入最终文本。
from openai import OpenAI
from markitdown import MarkItDown

client = OpenAI(base_url="http://localhost:11434/v1", api_key="local")
text = MarkItDown(
    enable_plugins=True,
    llm_client=client,
    llm_model="vision-model"
).convert("sample.xlsx").text_content
需要注意:这种方式通常只处理插入的位图,不会提取 Excel 图形对象、文本框或图表。因此,图片识别问题解决了,但结构问题仍然存在。
六、ExStruct:面向完整结构提取
ExStruct 的思路不是把工作簿压扁成文本,而是把结构转为可编程处理的数据。输出通常包括:
工作表和单元格;
合并区域;
图形类型、位置、尺寸和内部文字;
图表标题、系列信息;
嵌入图片的位置与对象信息。
from exstruct import extract

result = extract("sample.xlsx", mode="libreoffice", alpha_col=True)
这种输出非常详细,适合复杂检查表、制造业报告、流程图式工作簿以及需要建立知识库的场景。虽然数据量更大,但信息没有被提前丢弃,可以在后续阶段再做裁剪和摘要。
七、不同运行模式如何选择
模式
能力特点
运行环境
建议
轻量模式
可读取部分图形和图表,合并区域及图片位置能力有限
仅需编程环境
适合快速试验
办公套件模式
图形、图表、合并区域和图片位置较完整
需安装 LibreOffice 命令行组件
适合服务器与容器
标准或详细模式
在桌面办公软件环境中提取更多信息
通常需要 Windows 与本地 Excel
适合高保真处理
八、如何把图片内容也纳入结构化结果
ExStruct 能定位图片,却不一定直接理解图片内容。完整方案可以拆成三步:
先用 ExStruct 获取图片所在工作表、坐标和尺寸;
再用 openpyxl 读取嵌入图片的原始字节;
最后把图片交给视觉模型生成文字描述或提取其中的文本。
图 2 复杂工作簿的推荐处理流水线
九、旧版 Excel 文件的处理原则
旧版二进制工作簿与新版压缩包结构完全不同,不能假设同一套库会得到相同结果。有些工具遇到旧格式时不会报错,却会把图形或图表数量返回为零,这种静默丢失最危险。
推荐做法是先统一转换为新版格式,再进入结构提取流程:
Linux、macOS 或持续集成环境:使用 LibreOffice 无界面转换;
Windows 且安装 Excel:通过自动化接口另存为新版格式,保真度通常更高;
没有本地 Excel 且对复杂格式要求很高:考虑商业转换组件。
十、最终选型表
需求
推荐方案
只处理单元格数值
pandas
快速转换成大模型可读文本
MarkItDown
在表格文字之外,还要识别插入图片
MarkItDown + OCR 或视觉模型
要保留合并区域、图形、图表和位置关系
ExStruct,优先使用办公套件模式
结构和图片内容都要完整获取
ExStruct + openpyxl + 视觉模型
处理旧版工作簿
先转换为新版格式,再选择上述流程
十一、对企业数据治理的启示
技术工具可以抢救历史文件,但更重要的是减少未来的混乱。企业应尽早统一模板、字段定义、命名规则和数据录入方式,并把关键数据逐步迁移到可检索、可分析的数据库或知识平台中。
对于制造业和运营团队,建议把工作簿分为两类:规则数据表尽量数据库化;必须保留版式的报告则建立明确的结构规范。这样既能降低后续 AI 接入成本,也能减少因为合并单元格、自由布局和隐藏对象造成的信息损失。

相关学习资料