需先将财报转为文本/json并构造含明确指令的api请求,调用gemini提取结构化指标,清洗数值与时间字段后存入dataframe,再用matplotlib/plotly绘图,最后通过flask+chart.js实现web交互可视化。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望借助 Gemini API 对企业财报数据进行自动化处理并生成可视化图表,则需要将原始财报文本或结构化数据输入 API,并通过提示工程提取关键指标,再结合前端或后端绘图库完成图表渲染。以下是实现该目标的具体步骤:
一、准备财报数据并构造 API 请求
Gemini API 本身不直接解析 PDF 或 Excel 文件,需先将财报内容转换为纯文本或 JSON 格式,并在请求中明确指定分析目标。请求体需包含上下文、指令及输出格式约束,以确保返回结构化结果。
1、使用 Python 的 pdfplumber 或 PyPDF2 库提取 PDF 财报中的文字内容,保留关键段落如“合并利润表”“现金流量表”等标题及后续数值行。
2、将提取的文本按章节切分,拼接为带层级标记的字符串,例如:“【资产负债表】截至2023年12月31日,货币资金为12,458,900,000元……”
3、构建 JSON 格式的 POST 请求体,设置 model 字段为 gemini-1.5-pro,contents 字段中 system_instruction 说明角色为“财务数据分析助手”,user_message 包含财报文本与明确指令:“提取营业收入、净利润、总资产、总负债、经营活动现金流净额五项指标,以 JSON 格式返回,键名为 revenue、net_profit、total_assets、total_liabilities、operating_cash_flow”。
二、调用 Gemini API 并解析响应
API 返回结果为文本型 JSON 字符串,需校验格式合法性并转换为 Python 字典,避免因模型幻觉导致字段缺失或类型错误。应设置重试机制与字段默认值兜底策略。
1、使用 requests.post 发送请求,Header 中包含 Authorization: Bearer YOUR_API_KEY 与 Content-Type: application/json。
2、检查响应状态码是否为 200,若为 429 则暂停 2 秒后重试;若返回 error 字段,记录 error.message 并跳过该财报。
3、对 response.json()['candidates'][0]['content']['parts'][0]['text'] 提取内容,用 json.loads() 解析;若解析失败,则用正则表达式匹配 key:value 模式,强制构造字典,缺失字段赋值为 null。
三、清洗与标准化提取结果
Gemini 输出的数值常含逗号、货币单位或括号负号,需统一转为浮点数;时间字段可能模糊(如“本报告期”),需结合文件名或元数据补全为标准日期格式。
1、遍历字典各值,对字符串类型字段执行:去除所有非数字字符(除小数点、减号外),将“(123)”替换为“-123”,再用 float() 转换。
使用固定的 Next.js/Tailwind/Prisma 技术栈构建并记录独立 SaaS 项目,仅将 FastAPI 用于 Python 工作负载,并遵循严格的架构规范。
2、若原始财报文件名为 “ABC_2023_Annual_Report.pdf”,则从文件名提取 “2023” 并设为 fiscal_year 字段;若含 “Q3” 则补充 quarter 字段为 “3”。
3、将处理后的字典存入 Pandas DataFrame,列名为 ['company', 'fiscal_year', 'revenue', 'net_profit', 'total_assets', 'total_liabilities', 'operating_cash_flow'],company 来自文件前缀或人工配置映射表。
四、生成静态可视化图表
使用 Matplotlib 或 Plotly 将 DataFrame 中多期数据绘制成趋势图或对比柱状图,每张图表聚焦单一指标,横轴为 fiscal_year,纵轴为对应数值,确保坐标轴标签清晰、单位标注准确。
1、筛选 DataFrame 中同一 company 的连续三年数据,调用 plt.plot(x=years, y=revenues, marker='o') 绘制营收趋势线,标题设为 “XXX公司近三年营业收入(亿元)”。
2、对 net_profit 与 operating_cash_flow 同时绘图,使用双Y轴:左侧为净利润(蓝色实线),右侧为经营现金流(绿色虚线),图例注明“净利润”和“经营现金流净额”。
3、保存图像为 PNG 文件,路径为 ./charts/{company}_revenue_trend_2023.png,分辨率设为 300 DPI,字体大小统一为 12。
五、集成至 Web 可视化界面
将清洗后的财报数据存入 SQLite 或轻量级 PostgreSQL 表中,配合 Flask 构建后端 API,前端使用 Chart.js 渲染交互式图表,用户可通过下拉菜单选择公司与指标动态刷新视图。
1、在 Flask 中定义 /api/financial-data?company=ABC&metric=revenue 接口,SQL 查询对应公司的 metric 时间序列,返回 JSON 格式 {labels: [2021,2022,2023], data: [10.2, 12.5, 14.8]}。
2、前端 HTML 页面引入 Chart.js,初始化折线图实例,data.datasets[0].data 绑定 AJAX 响应的 data 字段,options.scales.y.title.text 设置为 “营业收入(亿元)”。
3、添加公司选择下拉框,onChange 事件触发 fetch 请求,更新图表配置后调用 chart.update(),确保每次切换均清除上一图表缓存。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!









