dify可通过pdf解析器+结构化提示词+chart.js实现财报数据提取与可视化。需启用ocr解析扫描件,绑定知识库上下文,用json格式提取年份、营收、净利润,再通过html组件、http请求或matplotlib生成可嵌入图表,并配置文件上传限制与错误兜底逻辑。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动解析上市公司财报PDF文件,从中提取营收、净利润等关键财务数据,并生成带时间轴的折线图——这要求模型能稳定识别表格结构、正确对齐年份与数值,且图表需可直接嵌入工作流输出。
上传并配置PDF解析器
在Dify知识库中新建一个知识集,选择「PDF」作为文档类型,上传一份含清晰财务报表(如合并利润表)的PDF文件。
勾选「启用OCR」——【若PDF是扫描件或图片型,不勾此项将完全无法提取文字】。
保存后点击「测试解析效果」,确认「营业收入」「归属于母公司股东的净利润」等字段在文本块中被完整切分,而非粘连成一行乱码。
编写结构化提示词提取财务数据
进入应用编排页,添加一个「LLM节点」,输入以下提示词:
你是一个财务数据提取助手。请严格按JSON格式输出:{ "years": ["2021", "2022", "2023"], "revenue": [125000000, 142000000, 158000000], "net_profit": [18200000, 21500000, 24600000] }。只输出JSON,不要任何解释、前缀或markdown代码块。
在「上下文」栏绑定上一步的知识库,确保模型能读取PDF解析后的纯文本。
运行测试时,若返回结果含中文引号、逗号缺失或年份错位,说明PDF表格列对齐异常——此时需回到知识库,手动删除PDF中页眉页脚干扰文本,再重新解析。
调用Chart.js渲染折线图
方法一:使用Dify内置HTML组件
添加「代码解释器」节点,在代码框中粘贴一段内联Chart.js脚本,输入变量从上一节点JSON中取值,例如:const data = {{ llm_output }};
方法二:对接外部图表服务
用「HTTP请求」节点,POST到你部署的简易图表API(如FastAPI接口),body传入{ "x": data.years, "y1": data.revenue, "y2": data.net_profit },响应返回base64图片URL。
方法三:生成可下载SVG矢量图
在代码解释器中执行Python + matplotlib,设置plt.rcParams['font.sans-serif'] = ['SimHei']避免中文乱码,最后用io.BytesIO().getvalue()转base64输出——【此方式生成的SVG缩放不失真,适合嵌入PPT或打印】。
配置前端交互与错误兜底
第一步:在对话界面添加「文件上传」组件,限制文件类型为.pdf,最大体积设为15MB。
第二步:在LLM节点后插入「条件判断」节点,检查JSON是否包含years数组且长度≥2;不满足则跳转至错误提示:“未检测到连续两年以上财务数据,请确认PDF含完整年报表格”。
第三步:将最终图表URL或base64字符串,通过「变量映射」填入模板消息:``````。











