金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载本文围绕 broker-research-analyst skillegs_skill/broker-research-analyst的 PDF 解析链路展开先对 pdfplumber、MarkItDown、MinerU、Marker 四类工具做面向券商研报场景的系统对比再给出按需分层的选型策略最后结合仓库中已落地的 pdf_parser.py 四层解析链实现与实测数据说明如何用 MarkItDown 升级主解析路径、保留 pdfplumber 兜底、按需启用 MinerU。读完本文你将掌握研报 PDF 场景下的工具选型方法论、分层解析架构设计以及可直接复用的命令行与配置实践。一、调研背景为什么评估替换 pdfplumberbroker-research-analyst skill 的定位是研报获取 → 结构化提取 → 多机构观点对比 → 风险识别 → 决策辅助全链路。其中研报 PDF 的文本抽取原本依赖pdfplumber PyPDF2核心痛点是段落结构保留弱投资要点/盈利预测/风险提示等固定段落难以精确定位复杂表格识别弱财务预测表EPS/PE/营收预测容易文本散乱格式兼容性差实测中部分 PDF 直接报No /Root object错误而整体失败见第八节实测数据。因此调研评估是否升级为MarkItDown / MinerU / Marker等新一代工具。调研时间为 2026-06-27改造实施已于同日完成方案 A。二、主流工具对比矩阵下表从开发方、License、部署难度、速度、中文支持、表格/公式/OCR、结构保留、多格式与 MCP 集成等维度完整对比四个候选工具维度pdfplumber当前MarkItDownMinerUMarker开发方社区微软 AutoGen 团队上海AI Lab (OpenDataLab)EndlessAILicenseMITMITApache 2.0模型含 AGPLGPL商用需授权安装难度简单pip极简pip 一键中需下载模型中需模型是否需 GPU否否推荐 GPUCPU 可跑但慢推荐 GPU处理速度12页PDF~5 秒4 秒1262 秒CPU/ 快 3-5xGPU630 秒CPUPDF 转换成功率中~60%25%复杂/扫描件差98.7%90%中文支持好中极好专为中文优化弱早期不支持中文表格识别中等一般样式丢失极强HTML嵌入、跨页合并一般公式识别不支持差乱码强LaTeX92.5%强LaTeX扫描件 OCR不支持需 Azure 付费内置内置章节结构保留弱弱纯文本强标题层级强图片处理提取文字仅占位符导出并关联说明自动导出文件多格式支持仅 PDF14 格式Office/音频/图片PDF/DOCX/PPTX/XLSXPDF/EPUB/MOBIMCP 集成无有有无LLM 友好度中高专为 LLM 设计高高注上述 Star 数、速度、准确率等指标来自调研报告原始记录具体数值会随版本演进变化落地前应以实测为准。三、券商研报场景适配性分析3.1 研报 PDF 特征语言中文为主格式多数为文本型 PDF非扫描件少数深度报告含扫描图表结构相对规范含投资要点/盈利预测/风险提示等固定段落关键内容文本段落投资逻辑→ 需段落级提取财务预测表格EPS/PE/营收预测→ 需精准表格识别评级/目标价散落正文→ 需文本上下文篇幅10-50 页公式罕见金融研报基本无数学公式。3.2 各工具适配评分针对研报场景工具适配度理由pdfplumber⭐⭐⭐中文OK、表格中等、轻量但段落结构与复杂表格弱MarkItDown⭐⭐⭐⭐轻量快、LLM友好、MIT、MCP集成研报多为文本型PDF可规避其扫描件短板MinerU⭐⭐⭐⭐⭐中文最强、表格HTML输出、章节结构保留财务预测表格提取最佳Marker⭐⭐中文弱、GPL商用受限不推荐四、推荐方案按需分层而非一刀切替换不建议直接替换现有解析器采用按需分层策略最优。方案 AMarkItDown 为主 pdfplumber 兜底轻量推荐⭐⭐⭐⭐研报 PDF ↓ MarkItDown 转换默认 → 产出 LLM 友好的 Markdown ↓ 失败/表格复杂时 pdfplumber 兜底现有逻辑优点安装极简pip install markitdown[pdf]无 GPU 依赖微软维护、MIT 许可商用无风险专为 LLM 设计输出 token 高效有 MCP Server可与 TRAE/Claude 原生集成。缺点复杂表格识别一般财务预测表可能丢格式需 Azure Document Intelligence 才能处理扫描件付费。适合MVP 阶段、轻量部署、多数文本型研报。方案 BMinerU 为主高精度推荐⭐⭐⭐⭐⭐研报 PDF ↓ MinerU 解析 → 产出 Markdown HTML 表格 ↓ LLM 基于 结构化 Markdown 做观点提取优点中文研报解析最强专为中文优化财务预测表格 → HTML 嵌入合并单元格、跨页表格完整保留章节层级保留投资要点/盈利预测/风险提示段落精准定位内置 OCR扫描件也能处理准确率 98.7%。缺点CPU 慢12 页需 21 分钟需 GPU 才实用推荐 8GB 显存模型大首次下载 GB 级部署复杂度高模型 AGPL 协议代码 Apache 2.0但模型权重有 AGPL 限制。适合有 GPU 服务器、追求极致解析质量、商业化产品。方案 C分层混合企业级推荐⭐⭐⭐⭐⭐研报 PDF ↓ 快速判断是否含复杂表格/扫描图表 ├─ 否 → MarkItDown快、轻 → 90% 研报走此路 └─ 是 → MinerU精、重 → 10% 复杂研报走此路 ↓ 统一输出 Markdown 结构化字段优点兼顾速度与精度按需调度。缺点需维护两套解析器复杂度最高。五、改造建议与决策路径5.1 短期MVP 增强方案 A改造pdf_parser.py将 MarkItDown 作为主解析器pdfplumber 作为兜底伪代码如下# 优先级MarkItDown pdfplumber PyPDF2 def parse_pdf(file_path): try: from markitdown import MarkItDown md MarkItDown() result md.convert(str(file_path)) return ParsedReport(full_textresult.text_content, ...) except Exception: # 回退到现有 pdfplumber 逻辑 return _try_pdfplumber(file_path)改动量小仅 pdf_parser.py 一个文件收益LLM 友好度提升、段落结构更清晰、社区维护更好风险低pdfplumber 兜底不会比现在差。5.2 中期精度提升方案 B/C当确认有 GPU 资源时集成 MinerU 处理复杂表格# 检测到表格密集型研报时调用 MinerU def parse_pdf_with_mineru(file_path): import mineru result mineru.parse(str(file_path)) # result.markdown 含 HTML 表格财务预测表完整保留 return ParsedReport(full_textresult.markdown, tablesresult.tables, ...)改动量中新增 mineru_adapter.py路由层增加判断收益财务预测表格提取准确率从 ~60% → 98%前提需 GPU 环境。5.3 推荐决策路径是否立即改造 ├─ 是 → 采用方案 AMarkItDown 为主 pdfplumber 兜底 │ 改动小、收益明确、风险低 └─ 否 → 保持现状待以下条件触发再升级 - 实测 pdfplumber 对财务表格丢失率 30% - 获得 GPU 服务器资源 - 此时直接上方案 CMinerU MarkItDown 分层六、关键验证点改造前需实测建议在改造前用 3-5 篇真实研报 PDF 实测以下指标段落完整性投资要点/盈利预测/风险提示段落是否完整提取表格保真度财务预测表EPS/PE 多年数据是否能正确识别行列评级/目标价散落正文的数字能否被上下文关联处理速度单篇研报解析耗时是否可接受 30 秒失败率批量处理 20 篇研报的成功率。七、结论针对券商研报场景的明确建议首选 MarkItDown 作为默认解析器方案 A轻量、LLM 友好、微软背书、MIT 许可与当前 skill 架构契合度高。研报多为文本型 PDF可规避其扫描件短板保留 pdfplumber 作为兜底现有逻辑不删确保稳定性MinerU 作为可选增强当用户有 GPU 且需要极致表格精度时如提取复杂财务预测表通过配置开关启用不作为默认依赖避免部署门槛过高不推荐 Marker中文支持弱 GPL 商用限制与研报场景不匹配。一句话总结用 MarkItDown 升级主解析路径pdfplumber 兜底MinerU 按需启用——这是研报场景下速度、精度、部署成本的最优平衡。八、落地实现仓库中的四层解析链方案 A 已实施调研报告提出的方案 A 已在仓库中完整落地核心实现在 pdf_parser.py实际架构比调研方案更进一步演化为四层文本解析链 独立图片提取链。8.1 四层文本解析链解析优先级定义于 pdf_parser.pyPARSER_MINERU mineru # 高精度路径中文最强、表格HTML默认关闭 PARSER_MARKITDOWN markitdown # 默认主路径微软LLM友好保留表格结构 PARSER_PDFPLUMBER pdfplumber # 兜底1 PARSER_PYPDF2 pypdf2 # 兜底2 DEFAULT_TEXT_CHAIN [PARSER_MARKITDOWN, PARSER_PDFPLUMBER, PARSER_PYPDF2]parse_pdf()按链顺序依次尝试任一解析器产出非空文本即返回并记录parser_used未安装的解析器ImportError与 MinerU CLI 缺失FileNotFoundError会被自动跳过其余异常记入 error 后继续下一层pdf_parser.py。各层实现要点MinerU_try_mineru为避免 Python API 版本差异通过 CLImineru -p input.pdf -o out -b pipeline调用10 分钟超时从输出目录读取{pdf_name}/auto/{pdf_name}.md并兼容不同版本的输出路径其 Markdown 已内嵌 HTML 表格pdf_parser.pyMarkItDown_try_markitdown基于 pdfminer.six 中文支持良好输出保留标题层级、列表与表格结构页数用文本规模估算pdf_parser.pypdfplumber / pypdf分别提供真实页数与最简纯文本保障pdf_parser.py。8.2 独立图片提取链PyMuPDF 主 pdfplumber 兜底文本解析与图片提取完全解耦extract_images()用PyMuPDFfitz作主路径速度快约 20x、按 xref 自动去重、保留 JPEG/PNG 原格式失败时回退 pdfplumber按内容哈希去重、强制转 PNG默认过滤宽度/高度 80px 的小图标页眉 logo 等图片按{pdf名}_images/p{页码}_img{序号}.{ext}命名pdf_parser.py。该设计的关键原因已在 SKILL.md 中注明MarkItDown 不支持 PDF 图片提取源码层面不调用 page.images因此图片必须独立提取供 LLM 多模态分析研报图表营收走势、毛利率趋势等。8.3 结构化输出ParsedReport 与段落识别解析结果统一封装为ParsedReportdataclass包含full_text、sections、page_count、char_count、parse_success、parser_used可追溯实际解析器、images等字段pdf_parser.py。段落识别extract_sections()用正则定位投资要点/盈利预测/风险提示/估值等标题截取到下一个标题或文末单段落上限 3000 字pdf_parser.pySECTION_PATTERNS { investment_points: r(投资要点|核心观点|投资建议|要点总结), earnings_forecast: r(盈利预测|业绩预测|财务预测), risk_warning: r(风险提示|风险因素|风险揭示|风险分析), valuation: r(估值|目标价|估值分析), }8.4 配置驱动settings.json 的 pdf_parser 段解析行为完全由 config/settings.json 的pdf_parser配置段控制pdf_parser: { prefer_parser: , enable_mineru: false, mineru_backend: pipeline, mineru_timeout_sec: 600, text_chain: [mineru, markitdown, pdfplumber, pypdf2], image_chain: [pymupdf, pdfplumber], image_min_width: 80, image_min_height: 80 }prefer_parser空 自动按链选择指定mineru/markitdown/pdfplumber/pypdf2时该解析器被提升到链首_build_parser_chain实现见 pdf_parser.pyenable_mineru默认false避免部署门槛过高设为true才把 MinerU 纳入解析链mineru_backend/mineru_timeout_secMinerU CLI 的 pipeline 模式与 600 秒超时image_min_width/height小图标过滤阈值。report_router.py 在启动时会读取该配置中的enable_mineru并透传给parse_pdf()因此无需改代码即可一键开启 MinerU 高精度路径。8.5 依赖与部署依赖清单见 requirements.txt核心包括markitdown[pdf]0.1.8 # 默认主解析器微软LLM 友好保留表格/结构 pdfplumber0.11.10 # 兜底解析器 1 图片提取兜底 pypdf3.15.0 # 兜底解析器 2PyPDF2 继任者修复无限循环 DoS PyMuPDF1.28.2 # 图片提取主路径fitz快、自动去重、保留原格式 Pillow12.3.0 # pdfplumber 图片提取依赖PILMinerU 为可选依赖注释中给出部署与启用方式pip install mineru[all] mineru-models-download然后在config/settings.json中设pdf_parser.enable_mineru true。8.6 CLI 独立测试入口pdf_parser.py 提供独立 CLI便于单独调试解析效果# 自动选择最优解析器并打印识别到的段落 python egs_skill/broker-research-analyst/scripts/pdf_parser.py 研报.pdf --sections # 强制指定解析器 python egs_skill/broker-research-analyst/scripts/pdf_parser.py 研报.pdf --parser markitdown # 仅打印前 2000 字、跳过图片提取 python egs_skill/broker-research-analyst/scripts/pdf_parser.py 研报.pdf --excerpt 2000 --no-images # 启用 MinerU 高精度路径需已部署 mineru python egs_skill/broker-research-analyst/scripts/pdf_parser.py 研报.pdf --mineru8.7 与报告生成、路由链路的集成generate_report.py 新增研报 PDF 解析摘要章节将解析结果前 1500 字渲染为代码块供 LLM 深度分析同时渲染研报图表提取章节列出提取的图片路径每篇前 5 张支持 LLM 视觉模型读取图表report_router.py 在批量解析时按[parser: {parsed.parser_used}]前缀把实际解析器标识写入摘要保证解析链路可追溯下载环节由 pdf_downloader.py 负责命名规则{机构}_{代码}_{日期}_{infoCode}.pdf、缓存去重、过期清理并针对东方财富 pdf.dfcfw.com 的 JS 反爬挑战页用 node 执行其 JS 解算 cookie 后重试且校验响应首字节为%PDF才落盘避免把挑战页误存为 PDF。九、实测验证茅台研报2026-06-27指标改造前pdfplumber改造后MarkItDown 为主解析成功率5/8 篇失败PDF 格式问题8/8 篇成功财务预测表文本散乱难以识别完整 Markdown 表格营收/净利/毛利率/EPS/PE 多年数据评级/目标价散落正文难提取首页多栏布局完整解析评级、分析师、证书号、目标价段落识别部分投资要点/盈利预测/风险提示/估值均识别字符数—13913 字符/篇解析速度~5 秒~4 秒关键发现实测中 pdfplumber 对部分 PDF5/8报No /Root object错误完全失败而 MarkItDown 全部成功解析——主路径反而比兜底更稳健三层实际四层架构的价值得到验证。十、待观察项与后续演进复杂财务表格的 Markdown 化质量合并单元格、跨页表格仍不如 MinerU后续若引入 GPU 资源可按方案 C 集成 MinerU 处理高精度场景当前代码已预留enable_mineru配置开关与_try_mineru实现无需改动主链路即可切换工具版本与指标Star、准确率、速度会持续演进升级前建议按第六节的关键验证点重新实测。延伸阅读完整的 Skill 用法与运行链路见 egs_skill/broker-research-analyst/README.md图片提取方案的专项调研见 egs_skill/PDF_IMAGE_RESEARCH.md。赞分享金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载相关推荐ai_quant_trade 券商研报 PDF 图片提取方案深度调研MarkItDown、pdfplumber 与 PyMuPDF 三方案对比与工程落地ai_quant_trade 券商研报 PDF 图片提取方案深度调研MarkItDown、pdfplumber 与 PyMuPDF 三方案对比与工程落地 本文金融科技示例工程券商研报 PDF 解析与端到端验证全记录broker-research-analyst 四层解析链与优雅降级实战券商研报 PDF 解析与端到端验证全记录broker research analyst 四层解析链与优雅降级实战 本文以 egs_skill/E2E_TEST金融科技示例工程券商研报分析 Skill 工程从 china-stock-analyst 架构借鉴到 broker-research-analyst 自研落地券商研报分析 Skill 工程从 china stock analyst 架构借鉴到 broker research analyst 自研落地 本文基于 eg金融科技示例工程上一篇终极指南JSZip如何实现多语言文件压缩与UTF-8国际化支持下一篇JSVerbalExpressions 捕获组Capture Groups完全指南用 beginCapture 与 endCapture 提取匹配数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考