mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
1292 字
3 分钟
财报实验室 2.0:上传一份年报,自动找到它的同行
2026-11-04

48 家公司入库 · 8 个细分行业 · 22 份年报通用性测试 · 解析从 165 秒降到 3 秒
原则没变:数字由代码算,校验不过就不生成。

上一篇结尾说过下一步要做的事:**放一份年报进去,自动产出同样质量的分析。**这次基本做到了。

现在能做什么#

上传一份年报(PDF / Excel / Word),大约 5 秒后得到:

  1. 三大报表解析,并做数值校验:资产 = 负债 + 权益、现金流闭合、利润勾稽。有一条不过就拒绝生成。
  2. 自动判断细分行业,按年报里「分行业」收入表的占比来定,不靠公司名猜。
  3. 三套评分:
    • 健康分(盈利 / 偿债 / 现金 / 成长 / 营运,各 20 分)
    • Z 分(破产风险)
    • F 分(财务质量 9 项)
  4. 多年趋势和同行对比:自动放进同一细分,算出排名和中位数。
  5. 财务分析报告:可导出 Word。数字全部来自程序,文字只负责解释;文中出现程序数据里找不到的数字,会标出来让人核对。

「行业」比想象中难#

证监会的行业分类太粗。比亚迪属于「汽车制造业」没错,宁德时代被归到「电气机械」,药明康德的主营业务在分行业表里写的是「化学业务」。

所以现在用的是两级标签:大类 › 细分,例如「制造业 › 新能源」「批发零售 › 医药商业」。判断依据按顺序是:

  1. 年报「分行业」收入表的占比,最可靠
  2. 主营业务描述里的关键词
  3. 公司名做最后的细化,比如分行业写「零售」,但公司叫「益丰药房」,就归医药商业

集团公司的跨行业业务也拆开了:同仁堂是「医药 50% + 医药商业 49%」,龙蟠科技是「新能源 78% + 汽车化学品 22%」,每块业务分别和对应的同行比较。

一次超时:165 秒 → 3 秒#

有人上传了一份 370 页的年报,120 秒后超时。

查下来,不是解析表格慢,是「找页」慢:识别行业、定位报表、读主营业务、找分部表、判断是否扫描件,五个步骤各自把整本 PDF 从头读了一遍。

改法很简单:用 pypdfium2 把整本 PDF 的文字只读一次,各步骤共用;精确读表格仍用原来的 pdfplumber,只读报表那几页。

年报页数之前之后
中国建筑370165 秒3 秒
万科A29884 秒4 秒

22 份测试年报重跑,结果一个数字都没变。

同行库:48 家#

从巨潮资讯批量下载了 48 份 2025 年年报,按正常上传的流程逐份解析,核对全过才入库:

细分家数
医药 / 新能源各 8
汽车整车7
家用电器6
医药商业 / 工程机械 / 白酒各 5
食品饮料4

批量跑的过程中又发现了几个只有大样本才会暴露的问题:

  • 比亚迪营收被算成 8 亿:单位写成「报表的单位为:千元」,多了一个「为」字没认出来
  • 五粮液找不到报表:封面写「2025年度报告」,不是常见的「2025年年度报告」
  • 苏泊尔资产负债不平:报表跨页后表格列数变了,读错了列

都修了。还剩两家没能入库:一家的报表是扫描图片,另一家的年报里找不到报表正文。

一个有意思的例子:比亚迪的 Z 分#

比亚迪 2024 年的健康分 87、F 分 9/9,Z 分却只有 0.19,「危险」。

不矛盾。Z 分只看资产负债结构:比亚迪的流动负债大于流动资产,大量占用供应商货款和客户预收款,这让它现金流很好,但在 Z 分公式里会被重扣。

所以现在 Z 分不在安全区时,页面会自动写出原因,并提醒结合另外两项一起看。单一指标没有意义,得看它和什么比 —— 和上一篇说的一样。

和别人的工具比,还差什么#

老实列一下:

  • 扫描件年报读不了(服务器内存只有 1.7 GB,放不下 OCR)
  • 只支持 A 股中文年报,港股 / 英文报表不行
  • 没有半年报、季报
  • 数字还不能点回 PDF 原页查看出处

进入财报实验室 · 未完成事项见备忘录

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

财报实验室 2.0:上传一份年报,自动找到它的同行
https://star-fall.159911.xyz/posts/caiwu-lab-v2/
作者
星落
发布于
2026-11-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

star-fall のcafe 加载中…