扫描PDF转文字:把无文字层的图片型 PDF 转成可编辑 Markdown

前言

处理扫描件时最常见的问题不是「解析失败」,而是工具静默成功: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 引擎识别,输出结构化文档。适合合同、票据、证件、报告等扫描件数字化。

核心功能

  1. 扫描件判定:pdfplumber、markitdown 或 PyMuPDF get_text() 对某 PDF 全部返回空,即说明该文件是扫描件而非数字生成。
  2. 逐页渲染高清 PNG,再用配置的 OCR 引擎识别,输出结构化 Markdown。
  3. 批量处理,支持渲染与 OCR 双阶段断点续传,中断后可从对应阶段继续。
  4. 歪斜页面自动纠偏,走三道安全门(细节以官方资料为准,不在此展开)。
  5. 双栏文档按正确阅读顺序输出,避免左右栏文字交错。
  6. 表格结构化还原,基于 PaddleOCR PP-StructureV3。
  7. 引擎可切换:默认 vision 引擎零安装即用,可选 paddle / tesseract 本地引擎。

版本说明:官方资料标注当前版本 3.0.2。

安装与启用

官方资料未给出安装命令、目录布局或配置字段,本文不臆造。可用的确认方式如下:

  1. 访问 SkillHub 官方页面确认 Skill 的存在、坐标与版本:https://www.skillhub.cn/skills/user_937442fe/scanned-pdf-extractor
  2. 接口地址:https://api.skillhub.cn/user_937442fe/scanned-pdf-extractor
  3. 该 Skill 标签为 requires_api_key=false,无需为调用本身准备 API Key。OCR 引擎若选 paddle / tesseract,属于本地引擎,需自行安装对应依赖,具体命令以官方文档为准。

Cursor / Codex CLI / Claude Code 的接入差异,官方资料未说明,此处不做区分描述。

典型用法

官方资料给出了如下可复现的判定与使用流程:

  1. 先对目标 PDF 跑常规解析,确认是否为扫描件:
pdfplumber / markitdown / PyMuPDF get_text() 全部返回空 → 扫描件

这一步是技能的触发信号,不是错误提示。

  1. 确认后进入渲染加 OCR 流程,逐页渲染高清 PNG,用配置的 OCR 引擎识别,输出结构化 Markdown。默认 vision 引擎无需安装即可直接使用。
  2. 批量处理时中断可续传,渲染与 OCR 两个阶段分别保留进度。
  3. 遇到双栏文档或表格时,分别走阅读顺序处理与 PP-StructureV3 表格还原。

适用场景与注意

适合:合同、票据、证件、报告等无文字层扫描件,尤其是需要批量处理、需要中断续传、页面存在歪斜或包含表格的场景。

限制:

  1. 触发前提是常规解析返回空。如果 PDF 本身有文字层,不必走这条渲染加 OCR 的链路。
  2. OCR 结果取决于引擎选择与图像质量。默认 vision 引擎零安装但需要可用视觉通道;paddle / tesseract 为本地引擎,性能与表格还原能力更强,但需自行安装并配置。
  3. 歪斜纠偏的「三道安全门」具体判定逻辑、渲染分辨率与配置文件字段,官方资料未提供,使用前建议先拿一两份样本验证效果。
  4. 资料未提供社区下载量以外的使用反馈,不在此引用未经核实的案例。

结尾

「扫描PDF转文字」的价值在于把「扫描件识别」从一次性脚本变成可中断、可批量、可处理双栏与表格的流程,并且默认引擎零安装即可跑通。官方地址:https://www.skillhub.cn/skills/user_937442fe/scanned-pdf-extractor。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜