扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)
一款完全离线的 PDF 扫描件方向检测与批量修正工具,用 Tesseract OCR、霍夫变换、四向试探等 6 种方法综合判断,支持 GUI + CLI 双模式,附开源代码。
目录
- [扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)](#扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具))
- 效果展示
- 一、为什么需要本地文档扶正工具
- [二、Scan Corrector 是什么](#二、Scan Corrector 是什么)
- 三、和现有工具相比有什么不同
- 四、它能处理哪些文档
- 五、怎么用
- 六、它怎么判断方向的
- [6.1 六位"裁判"各自怎么判断](#6.1 六位"裁判"各自怎么判断)
- [6.2 综合决策流程](#6.2 综合决策流程)
- 七、已知限制
- 八、下载与开源地址
- 九、速查表
效果展示
软件操作示意
扫描件处理前后对比
手动修正界面
一、为什么需要本地文档扶正工具
工作学习中我处理过大量扫描件,很多文件有一个共同特点:方向经常是乱的 ,偏偏它们的另一大特点是:不能使用任何在线工具随便上传到云端。
一页正的、一页倒的,一页横着、一页竖着。上百上千页文档手动一页一页旋转简直折磨人,不阅读内容根本分不清哪页该朝哪个方向。
现有的方案各有硬伤:在线矫正工具倒是不少,但"上传"这两个字在注重数据安全的场景里就是红线;商业 OCR 软件(如 ABBYY FineReader)功能全面但年费动辄上千,纠偏只是附属功能,杀鸡用牛刀;WPS Office 虽有文档扶正功能,但需要登录账号、部分功能依赖会员,且不生成可追溯的检测报告;开源桌面工具要么需要自己装 Python 环境,要么只做小角度倾斜校正,处理不了"整页颠倒 180°"这种离散方向错误。
所以我做了一个本地工具:Scan Corrector(扫描件智能纠偏工具)。完全离线运行,不需要联网,解压即用。这篇文章讲它做了什么、怎么判断方向的、和现有工具相比有什么不同、以及哪些场景适合用。
二、Scan Corrector 是什么
Scan Corrector 是一款 PDF 扫描件方向检测与批量修正的本地工具。它会逐页判断页面是否被旋转,然后把需要修正的页面写回为新的 PDF。
它的定位很明确:不做 OCR 全文识别,不上传文件,不追求花哨功能,只专注把"扫描 PDF 方向混乱"这件事尽可能稳妥地解决。
核心特点:
- 完全本地处理:运行过程中不需要联网,隐私文件无需上传云端
- 一站式便携版:7z 分卷压缩下载约 105MB,解压后约 400MB,内置运行环境和 Tesseract OCR 方向检测引擎,解压即可运行
- 批量处理 PDF:支持逐页检测、批量旋转;目前 100 页文档约 2 分钟完成
- GUI + CLI 双模式:普通用户双击使用,批处理场景也能走命令行
- 自动 + 手动兜底:自动检测不满意时,可以手动指定页码旋转角度
- 可追溯报告:处理后生成 JSON 和 Excel 报告,方便检查每页判断结果
- 开源可审计:项目代码公开,便于确认是否存在上传、联网或隐藏逻辑
- 实测效果稳定:当前测试样本中,所有页面均正确扶正,没有出现漏检
三、和现有工具相比有什么不同
市面上能做 PDF 纠偏的工具不少,但把它们放到一起看,会发现各自的短板很明显:
| 工具类型 | 代表产品 | 短板 |
|---|---|---|
| 在线工具 | Sejda、imageonline.co | 需上传文件,隐私风险;有页数/大小限制 |
| 商业 OCR | ABBYY FineReader、Adobe Acrobat | 价格高、体积大,纠偏只是附属功能 |
| 办公套件 | WPS Office | 需登录账号/会员,扶正是附属功能,无检测报告 |
| 开源桌面 | Tinnci/pdf_deskew、PDF24 Creator | 需安装 Python 环境,或只做小角度校正,无方向检测 |
| 扫描仪自带 | 汉王、紫光 | 硬件绑定,不能事后处理已有 PDF |
Scan Corrector 的差异化在于同时满足四个条件------完全离线(文件不离开电脑)、便携免安装(解压即用)、能检测 180° 离散方向错误(不只小角度倾斜)、生成可审计的检测报告。这四点同时满足的工具,目前市面上找不到第二个。
如果你只是偶尔处理几页非敏感文档,在线工具就够用;如果已经买了 ABBYY,它的纠偏能力也足够。但如果你的场景是"档案、合同、凭证批量归档,不能上传,又不想花上千块买软件"------这就是 Scan Corrector 的价值所在之处。
四、它能处理哪些文档
| 场景 | 示例 |
|---|---|
| 合同扫描件 | 买卖合同、授权书、签署页方向混乱 |
| 审计凭证 | 上百页凭证扫描后需要统一方向归档 |
| 财务报表 | 季度/年度报表扫描后页面横竖不一致 |
| 业务档案 | 客户资料、尽调文件、内部审批材料 |
| 教学资料 | 试卷、讲义、论文扫描件批量整理 |
一句话概括:凡是不能随便上传云端、又需要批量整理方向的 PDF,都适合先用它处理。
五、怎么用
发布包是 Windows 便携版。从 Gitee 发行版页面 下载 release-v1.0.0.7z.001 和 release-v1.0.0.7z.002 两个分卷文件,解压后运行即可------不需要安装 Python,也不需要单独安装 Tesseract。
图形界面:适合日常使用
双击运行:
text
扫描件智能纠偏工具.exe
| 按钮 | 作用 |
|---|---|
| 选择 PDF | 打开要处理的 PDF 文件 |
| 开始处理 | 自动检测方向错误并旋转修正 |
| 只看报告 | 只生成检测报告,不修改文件 |
| 手动修正 | 对自动检测不满意的页面,手动指定旋转角度 |
命令行:适合批量和自动化
bat
:: 自动检测并修正
扫描件智能纠偏工具-cli.exe input.pdf
:: 只生成报告,不修改文件
扫描件智能纠偏工具-cli.exe --dry-run input.pdf
:: 手动指定某些页面的旋转角度
扫描件智能纠偏工具-cli.exe --manual input.pdf 3:90 5:180 9:270
:: 指定输出目录
扫描件智能纠偏工具-cli.exe input.pdf D:\输出目录
处理完成后,会在原 PDF 旁边生成这些文件:
| 文件 | 说明 |
|---|---|
原文件名_corrected.pdf |
修正后的 PDF |
原文件名_processing_report.json |
逐页检测报告(JSON) |
原文件名_processing_report.xlsx |
逐页检测报告(Excel) |
如果同名文件已经存在,工具会自动追加 _2、_3 等后缀,不会直接覆盖原结果。
六、它怎么判断方向的
这是本文最核心的部分。
很多人以为"检测 PDF 方向"就是调一次 OCR 看看文字朝哪边------如果这么简单就好了。实际扫描件里的情况远比想象的复杂:页面噪声、红色印章覆盖文字、表格线干扰判断、页眉页脚方向和正文不一致、纯图片页面根本没有文字......
所以这个工具不是一个方法搞定一切,而是把 6 种检测方法组成一个"裁判团",让它们各自从不同角度观察同一页 PDF,最后综合投票给出判定。
6.1 六位"裁判"各自怎么判断
想象一场比赛,有六位裁判,每位从不同维度给选手打分。他们不是互相替代的关系,而是互补的关系------有的裁判擅长看文字方向,有的擅长看线条结构,有的擅长在模糊情况下做二次确认。
裁判一:Tesseract OSD(主裁判------看文字方向)
这是最直接的方法:直接让 OCR 引擎判断页面文字的朝向。就像你拿到一张纸,第一反应就是"字是朝哪个方向写的"。Tesseract OSD 会用多种预处理版本分别判断,然后内部投票得出一个方向结论。
这个裁判在大多数情况下就能给出正确结果,是整个判断流程的第一关。
裁判二:霍夫变换(结构裁判------看线条走向)
有些页面文字模糊,但表格线、边框线很清晰。霍夫变换不看文字内容,而是从图像中提取线条,判断这些线条主要是横向的还是纵向的。就像你远远看一张表格,虽然看不清字,但能看出表格线是横排还是竖排------光凭这个信息,页面方向就猜个八九不离十了。
裁判三:四向试探(穷举裁判------转一圈看哪个最"顺眼")
有时候单看一个方向不够确定,那就干脆把页面转 4 个方向(0°、90°、180°、270°)各跑一次 OCR 方向检测,看哪个角度下 OCR 报告的置信度最高。就像你不确定一张图是正着看还是倒着看时,转一圈试试,哪个方向最"顺眼"就是哪个。
裁判四:文字密度分析(墨迹裁判------不认字,只看分布)
这个方法完全不依赖 OCR 识别具体文字。它把页面分成若干网格,统计每个区域里"有墨迹"的像素比例,然后分析这些墨迹在水平和垂直方向上的投影分布。就像你不需要认识一个字,只看整页纸的墨迹分布是横版的还是竖版的。
这个裁判特别擅长区分"有文字的页面"和"几乎空白/纯图片的页面"------后者根本不适合用 OCR 来判断方向,需要提前识别出来。
裁判五:区域 OSD(特写裁判------只看正文,忽略页眉页脚)
很多扫描件的页眉、页脚、页码、logo 和正文方向不一致,或者大面积的页眉页脚会干扰 OCR 的判断。区域 OSD 的做法是:裁剪掉页面边缘区域,只保留正文部分再做方向检测。就像你判断一篇文章是横排还是竖排时,不会去看页码和 logo,只看正文部分。
裁判六:多区域放大重检(放大镜裁判------疑难页面切片再判断)
对于低质量扫描件(模糊、噪声多、印章覆盖文字),直接对整页做检测可能失败。这时把页面切成多个区域,分别放大后再做方向检测。就像你看不清远处招牌上的字时,走近看或者拿手机放大看------同一张图,放大后细节更清晰,判断更可靠。
6.2 综合决策流程
六位裁判的结果不是简单"少数服从多数",而是有一套保守决策逻辑:
检测到一页 PDF
│
├── 裁判四:文字密度分析 → 几乎无文字?
│ ├── 是 → 标记"低置信度",建议人工复核
│ └── 否 → 继续
│
├── 裁判一:Tesseract OSD(主裁判)→ 置信度高于阈值?
│ ├── 是 → 直接采用,进入下一步
│ └── 否 → 启动裁判团
│
├── 裁判团投票:裁判二 + 裁判三 + 裁判五
│ ├── 多数一致 → 采用多数结果
│ └── 仍然冲突 → 启动放大镜裁判
│
├── 裁判六:多区域放大重检 → 能确定方向?
│ ├── 是 → 采用
│ └── 否 → 标记"建议人工复核"
│
└── 最终输出 → 逐页写入修正后的 PDF + 生成检测报告
这套设计的核心思路是:能自动处理的尽量自动处理,不确定的诚实标记出来留给人工。 不一味追求"100% 全处理正确",而是让批量处理的结果可追溯、可抽查、可修正。
在测试的 100 页级文档中,处理耗时约 2 分钟,页面均正确扶正,没有出现漏检。但实际效果会受扫描质量影响------已知限制见下一节。
七、已知限制
这个工具处理的是 90° 整数倍方向错误,不是万能的扫描增强工具。使用前了解几个边界:
- 不处理 1°、2° 这类轻微倾斜校正
- 无文字或文字极少的页面,方向检测置信度会比较低
- 180° 倒置检测会比 90° / 270° 更保守
- 极低质量扫描件可能受到噪声、边框、印章影响
- 自动检测结果建议结合报告抽查,疑难页可使用手动修正
它更像一个稳妥的 PDF 方向整理助手,而不是承诺所有扫描问题一次性修好的魔法按钮。
八、下载与开源地址
- 项目主页 :
https://gitee.com/lynli/scan-corrector - 适用系统:Windows
- 发布形式 :一站式便携版,7z 分卷压缩下载约 105MB,解压后约 400MB,从 Gitee Release 下载后解压即可使用
- 源码许可证:Apache License 2.0
- 依赖提示:工具包含 PyMuPDF 组件(AGPL v3),商业分发时请留意相关许可证要求
如果你只是使用发布包处理自己的本地文档,从 Gitee Release 下载 7z 分卷文件并解压运行即可,整个处理过程完全在本地完成。若要二次开发、闭源集成或商业再分发,建议阅读项目 README 里的许可证说明。
九、速查表
| 你想做什么 | 怎么做 |
|---|---|
| 日常处理一个 PDF | 双击 exe → 选择文件 → 开始处理 |
| 只看检测结果不修改 | 点击"只看报告"按钮 |
| 某几页自动检测错了 | 点击"手动修正" → 输入页码和角度 |
| 批量处理多个文件 | 用 cli.exe 编写 .bat 脚本 |
| 查看每页的检测详情 | 打开生成的 .xlsx 与 .json报告 |
| 在自己的流程里自动化调用 | cli.exe 支持命令行参数,可集成到 Python/Shell 脚本 |
| 不想安装任何环境 | 直接用 release 便携版,解压即用 |
💡 声明:本文借助 AI 辅助工具进行资料整理与初稿优化,所有内容均经过作者本人的详细核对、修改与编排,文责自负。
产品发布日期:2026 年 7 月