前言¶
处理扫描件时最常见的问题不是「解析失败」,而是工具静默成功:pdfplumber、markitdown 或 PyMuPDF 的 get_text() 对某个 PDF 全部返回空字符串,但文件看起来完好,用户以为已经提取完成。这类 PDF 是纯图片、没有嵌入文字层,常规解析拿不到任何内容。下面介绍的 Skill「扫描PDF转文字」就是针对这个信号设计的:先判定是不是扫描件,再用渲染加 OCR 的方式重建文字,输出结构化 Markdown。
这是什么¶
「扫描PDF转文字」是一个社区来源的通用 SKILL.md 格式 Skill,坐标 @user_937442fe/scanned-pdf-extractor,当前版本 3.0.2,分类 office-efficiency,发布者 user_937442fe。它解决的问题是:当常规解析工具都提取不到文字时,对扫描版 PDF 逐页渲染高清图片,用 OCR 引擎识别,输出结构化文档。适合合同、票据、证件、报告等扫描件数字化。
核心功能¶
- 扫描件判定:pdfplumber、markitdown 或 PyMuPDF
get_text()对某 PDF 全部返回空,即说明该文件是扫描件而非数字生成。 - 逐页渲染高清 PNG,再用配置的 OCR 引擎识别,输出结构化 Markdown。
- 批量处理,支持渲染与 OCR 双阶段断点续传,中断后可从对应阶段继续。
- 歪斜页面自动纠偏,走三道安全门(细节以官方资料为准,不在此展开)。
- 双栏文档按正确阅读顺序输出,避免左右栏文字交错。
- 表格结构化还原,基于 PaddleOCR PP-StructureV3。
- 引擎可切换:默认 vision 引擎零安装即用,可选 paddle / tesseract 本地引擎。
版本说明:官方资料标注当前版本 3.0.2。
安装与启用¶
官方资料未给出安装命令、目录布局或配置字段,本文不臆造。可用的确认方式如下:
- 访问 SkillHub 官方页面确认 Skill 的存在、坐标与版本:
https://www.skillhub.cn/skills/user_937442fe/scanned-pdf-extractor - 接口地址:
https://api.skillhub.cn/user_937442fe/scanned-pdf-extractor - 该 Skill 标签为
requires_api_key=false,无需为调用本身准备 API Key。OCR 引擎若选 paddle / tesseract,属于本地引擎,需自行安装对应依赖,具体命令以官方文档为准。
Cursor / Codex CLI / Claude Code 的接入差异,官方资料未说明,此处不做区分描述。
典型用法¶
官方资料给出了如下可复现的判定与使用流程:
- 先对目标 PDF 跑常规解析,确认是否为扫描件:
pdfplumber / markitdown / PyMuPDF get_text() 全部返回空 → 扫描件
这一步是技能的触发信号,不是错误提示。
- 确认后进入渲染加 OCR 流程,逐页渲染高清 PNG,用配置的 OCR 引擎识别,输出结构化 Markdown。默认 vision 引擎无需安装即可直接使用。
- 批量处理时中断可续传,渲染与 OCR 两个阶段分别保留进度。
- 遇到双栏文档或表格时,分别走阅读顺序处理与 PP-StructureV3 表格还原。
适用场景与注意¶
适合:合同、票据、证件、报告等无文字层扫描件,尤其是需要批量处理、需要中断续传、页面存在歪斜或包含表格的场景。
限制:
- 触发前提是常规解析返回空。如果 PDF 本身有文字层,不必走这条渲染加 OCR 的链路。
- OCR 结果取决于引擎选择与图像质量。默认 vision 引擎零安装但需要可用视觉通道;paddle / tesseract 为本地引擎,性能与表格还原能力更强,但需自行安装并配置。
- 歪斜纠偏的「三道安全门」具体判定逻辑、渲染分辨率与配置文件字段,官方资料未提供,使用前建议先拿一两份样本验证效果。
- 资料未提供社区下载量以外的使用反馈,不在此引用未经核实的案例。
结尾¶
「扫描PDF转文字」的价值在于把「扫描件识别」从一次性脚本变成可中断、可批量、可处理双栏与表格的流程,并且默认引擎零安装即可跑通。官方地址:https://www.skillhub.cn/skills/user_937442fe/scanned-pdf-extractor。