前两天一个同事发来一张合同照片,说要改其中一段话。我打开一看,拍照歪了、光线不均匀、还有半个手影搭在纸角上,这种图别说让程序识别,人眼看着都费劲。他想直接“复制粘贴”文字,结果发现扫描件和照片在Word里一律是图片,根本没法编辑。这类需求几乎每个办公党都遇到过:把扫描件PDF转成可编辑Word。很多教程上来就喊“PDF转Word”,但做出来的文档要么乱码满天飞,要么版面全乱,本质原因就是走错了路。
记住一个原则:先转规范PDF,再做OCR。OCR引擎不是魔法,它是“看图识字”的程序,输入质量直接决定输出质量。所以先想尽办法把扫描件做成一份规范PDF,再交给OCR工具,后面会顺很多。这篇文章适合经常处理纸质合同、书籍扫描件、论文资料、报销单据的人,也适合要批量做文档数字化的开发者。我会把从规范PDF制作、OCR工具选型、特殊内容处理到常见问题排查的完整流程都梳理一遍。
1. 为什么扫描件不能直接“另存为 Word”,核心思路在这里
1.1 扫描件的本质是图片,不是文字
很多人不理解一个基本事实:扫描仪扫出来的东西,在计算机眼里根本不是文字,而是由密密麻麻的像素点组成的矩阵。所谓“扫描件PDF”,本质是把这一堆像素点打包进一个PDF容器里。你在屏幕上看到字,那是人的大脑在“补全”,计算机看到的只是深浅不一的格子。
这就是为什么你打开扫描件PDF,用鼠标拖选半天也选不中文字。因为文件里压根不存在“字符”这种数据,只有“颜色”。你没法对一个像素矩阵做查找替换,也没法改字体字号。想让它变成真正可编辑的Word,就必须经过OCR(光学字符识别),也就是让程序“看图识字”,把像素矩阵重新翻译成字符编码。
而OCR的识别准确率受输入图像质量影响极大。给程序一张干净清晰的图,它能还你一份像样的文字;给一张歪斜模糊带阴影的图,它只能还你一堆错别字。这一步就是整个流程的分水岭。
1.2 为什么“先转规范 PDF”能决定 OCR 的成败
我见过太多人拿到扫描件直接丢给在线转换工具,结果识别出来“0”和“O”不分、“l”和“1”混用、段落顺序错乱,还以为是工具不行。其实大部分问题出在输入文件不规范。
OCR引擎内部大体分几步:方向检测、行定位、字符切分、特征匹配。如果页面歪了,行定位就偏了;如果字迹模糊,字符切分就裂了;如果背景有阴影,特征匹配就把阴影当成笔画。每一步都会累积错误,最后出来的文字当然没法看。
“规范PDF”我指的是这几个硬指标:页面方向正确、文字行水平、字迹清晰锐利、背景干净无噪声、对比度足够高、页面尺寸统一。你可以把OCR想成抄写员——你递给抄写员一张工整的A4纸,他当然能抄得好;你递给他一张皱巴巴、还沾了咖啡渍的餐巾纸,抄错是正常的。
所以流程第一步绝对不是“找OCR工具”,而是“把题目做干净”。这一句话能帮你少走至少一半弯路。
1.3 先分清文本型 PDF 和图片型 PDF
拿到一份PDF,先别急着转,花十秒钟判断它是什么类型。用阅读器打开后,按Ctrl+A全选,如果能看到文字被选中高亮,说明这份PDF自带文字层,是“文本型PDF”。这种文件直接“另存为Word”或“导出为Word”就行,根本不用走OCR流程,格式丢失也最少。
如果全选之后什么都没选中,或者只选中了一张大图,那这就是“图片型PDF”或叫“扫描件PDF”。这类文件才需要进入本文的完整流程。还有一种混合型PDF,部分页面有文字层、部分是扫描图片,多见于“扫描后再加工”的文档,这种情况只对无文字层的页面做OCR即可。很多高级工具,比如Adobe Acrobat的“扫描与OCR”功能,能自动识别这种混合文件。
1.4 三步走的整体流程
整条链路其实就三步,每步都不能跳:第一步把纸质件或图片处理成规范PDF;第二步用OCR工具对规范PDF做文字识别;第三步把识别结果导入Word并做校对修复。
| 步骤 | 核心任务 | 常见误区 |
|---|---|---|
| 一、规范PDF制作 | 扫描/拍照后做去歪斜、去噪、增强对比度、统一页面 | 拿到图直接识别,不预处理 |
| 二、OCR识别 | 选择合适工具,输出带文字层的PDF或Word | 只看“有没有字”,不看识别率 |
| 三、校对与转Word | 清理样式、修误识别、调表格公式 | 识别完不核对就交付,留下隐患 |
2. 第一步不是识别,是“做一道干净的题”:规范 PDF 制作全流程
2.1 扫描仪设置:一开始就别给自己挖坑
如果你手头有扫描仪,参数设置决定了后续所有步骤的工作量。我第一次做批量扫描时不以为意,默认150dpi扫完一本手册,结果OCR识别率惨不忍睹,后来重扫了一遍才消停。
扫描参数记住三个原则。第一,分辨率300dpi起步。150dpi对屏幕预览够用,但对OCR来说,字符边缘已经糊了;300dpi是公认的OCR黄金起点,600dpi对普通文档没有明显提升,反而文件体积暴涨。第二,纯文字文档选择黑白扫描,带红章、照片、彩色批注的选择彩色或灰度。黑白模式生成的文件小,二值化后的图像对OCR最友好;但如果你硬用黑白扫一份红头文件,红章会变成大片黑斑,干扰识别。第三,打开扫描软件里的“自动纠偏/自动裁剪”选项,多数品牌扫描仪驱动都带这个功能,能帮你去掉轻微歪斜和黑边。
多页文档扫描时记得统一页面方向,别把横向表格和纵向正文混在一个文件里。如果扫描软件支持“跳过空白页”,务必开启,空白页在OCR时会白白浪费时间。
注意:扫描完先随便翻几页看看效果。别扫完50页才发现有一半是歪的,重扫的成本可比前处理高多了。
2.2 手机拍照补救:桌面平摊、光线均匀、无阴影
现在很多扫描件根本不是扫描仪出来的,而是手机拍的。手机拍照做OCR不是不行,但对拍摄要求更高。
拍纸质件时,手机尽量正对纸面,镜头和纸面保持垂直。很多人习惯斜着拍,结果上宽下窄,文字行也变成了斜线,这类图片靠后期纠正非常麻烦。纸要完全摊平,书本类的可以用手压一下边缘,别让页面弯成弧形。光线要均匀,最好的光源是自然光和室内灯的组合,避免强烈顶光造成纸面局部反光。如果有条件,把纸放在窗边,用A4白纸做背景,能让程序更容易识别页面边界。
拍完别急着用,先用手机自带的文档矫正功能或扫描类APP处理一遍。像扫描全能王这类工具能自动切边、透视矫正、增强对比度,相当于帮你做了初步的规范步骤。我实测下来,经过这类APP处理过的翻拍图片,OCR准确率普遍比原图高10%到20%。
2.3 图像预处理四件套:去歪斜、去噪、增强对比度、统一尺寸
拿到扫描图或翻拍图后,如果要进一步提升效果,就得做图像预处理。这一节是给愿意多花几分钟换高识别率的人看的,普通用户可以直接跳到2.4节的工具实操。
预处理核心是四件事。
- 去歪斜:检测页面文字行的倾斜角度,旋转图像把文字行摆正。多数扫描软件已经做过,如果没做,用OpenCV的霍夫变换或图像矩可以自动算出来。
- 去噪:扫描件的噪点通常来自纸面纹理、墨迹渗色,或者压缩产生的杂点。常见做法是中值滤波或高斯模糊,把杂点抹掉。但要控制力度,糊得太过会把笔画也糊掉。
- 增强对比度:目标是让文字更黑、背景更白。最简单粗暴的方法是全局阈值二值化;纸面背景不均匀时,得用自适应阈值,比如OpenCV的adaptiveThreshold。
- 统一尺寸:多页文档统一页面大小和方向,避免OCR时每页都要重新判断一次版心。
这四步做完,基本就是一幅“标准考题”了。
2.4 预处理脚本和工具实操:用代码批量搞定
如果你有几十上百页扫描件要处理,手一页页调参不现实。这时候写个脚本批量处理省事多了。下面这段Python代码是我常用的预处理流程,依赖Pillow和OpenCV,装好就能跑。
import cv2 import numpy as np from PIL import Image import os def preprocess_image(input_path, output_path): # 读取图片 img = cv2.imread(input_path, cv2.IMREAD_GRAYSCALE) # 去噪:中值滤波,窗口大小根据噪点颗粒感调整 img = cv2.medianBlur(img, 3) # 自适应阈值二值化:块大小取31,C值取15,具体可微调 img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 15) # 旋转矫正:检测最大负方向的角度偏移(这里简化,略过实现) # angle = detect_skew(img) # img = rotate_image(img, angle) # 统一尺寸:设成长边2000px,保持比例 h, w = img.shape max_side = 2000 if max(h, w) > max_side: scale = max_side / max(h, w) img = cv2.resize(img, (int(w * scale), int(h * scale))) # 保存为临时PNG,再由Pillow转为PDF cv2.imwrite('temp_page.png', img) def images_to_pdf(image_folder, output_pdf): img_list = [] for fname in sorted(os.listdir(image_folder)): if fname.lower().endswith(('.png', '.jpg', '.jpeg', '.tif')): img = Image.open(os.path.join(image_folder, fname)).convert('RGB') img_list.append(img) if img_list: img_list[0].save(output_pdf, save_all=True, append_images=img_list[1:]) if __name__ == '__main__': input_dir = 'scans/' output_dir = 'clean/' os.makedirs(output_dir, exist_ok=True) for fname in os.listdir(input_dir): if fname.lower().endswith(('.png', '.jpg', '.jpeg', '.tif')): preprocess_image(os.path.join(input_dir, fname), os.path.join(output_dir, fname)) images_to_pdf(output_dir, 'clean_scan.pdf')脚本逻辑不复杂:先转灰度,中值滤波去掉颗粒噪点,自适应阈值把文字和背景分离,再把所有图合成一个大小统一的PDF。原理上就是2.3节那四件事的自动化。
如果你不想碰代码,用Adobe Acrobat打开扫描件PDF,选择“扫描与OCR”菜单下的“增强”功能,也能自动完成纠偏、去背景、锐化这几步。这是最省心的商业方案之一,后面章节会细说。
2.5 规范 PDF 自查清单
做完预处理后,过一遍自查清单再进入OCR环节。
| 检查维度 | 理想标准 | 常见问题 | 处理方式 |
|---|---|---|---|
| 页面方向 | 正向,文字可正常阅读 | 横竖混排 | 批量旋转/统一方向 |
| 文字水平 | 行基线平直,无倾斜 | 扫描歪斜、手机拍照透视 | 自动纠偏、透视矫正 |
| 对比度 | 字黑底白,边界清晰 | 纸张灰暗、墨迹浅 | 增强对比度、二值化 |
| 噪声 | 背景干净,无斑点斑块 | 纸纹、墨渍、阴影 | 滤波去噪、裁剪区域 |
| 页面尺寸 | 多页统一,版心一致 | 混扫A4/A3、不同边距 | 统一缩放与裁剪 |
| 文件格式 | 单份规范PDF,无缺页 | 文件损坏、页序错乱 | 重新合并、修复PDF |
这一份清单也是在排查OCR识别率低的“第一现场”。如果识别效果差,回看清单,十有八九能找到突破口。
3. OCR 工具选型与完整实操:离线、在线、脚本三条路线
3.1 工具选型对比:先看需求再选路
市面上OCR工具多得像火锅店的蘸料,挑花眼反而耽误事。直接按场景分三类:
| 工具 | 类型 | 优点 | 缺点 | 适合谁 |
|---|---|---|---|---|
| Adobe Acrobat | 商业/自带OCR | 扫描与OCR一体化,自动识别文字层 | 订阅贵 | 办公用户、需要直接编辑PDF的人 |
| ABBYY FineReader PDF | 商业/专用OCR | 版面还原能力最强,表格格式保留好 | 价格高、软件较重 | 专业文档处理、难排版的书刊扫描件 |
| Tesseract | 开源/命令行 | 免费、跨平台、可脚本化 | 中文识别需调参、版面分析弱 | 开发者、批量处理、离线识别 |
| PaddleOCR | 开源/深度学习 | 中文识别效果好、支持表格结构识别 | 依赖Python环境、模型较大 | 对中文准确率有要求的开发者 |
| 在线OCR网站 | 在线服务 | 零安装、界面友好 | 隐私风险、免费版限制多 | 一次性处理、对隐私不敏感的人 |
如果你只是偶尔处理三五页合同,在线OCR省事。但要注意,涉密文件和隐私资料不要传在线平台,这点后面单说。如果是长期要处理文档,我建议至少备一个本地工具。
3.2 “拿来就用”的最优路线:Acrobat 和 ABBYY
先说结论:对绝大多数办公用户,Adobe Acrobat是最好上手的方案。打开扫描件PDF,点击右侧面板的“扫描与OCR”,选“识别文本”,再选语言(中文或中英文混合),Acrobat会把识别出的文字写入一个隐藏的文字层。这时候你就能在PDF里搜索、复制文字了。想转成Word就点“文件→导出为→Microsoft Word”。
Acrobat的“增强扫描”功能内置了自动纠偏、背景清理、透视校正,正好承接第2章的规范PDF制作,等于把两件事放到了一个软件里。我实测过,纪律性好的扫描件用它识别简体中文,准确率能做到95%以上。缺点也明显:订阅制,不便宜。
如果扫描件版面复杂,比如双栏书刊、带页眉页脚和注释的材料,ABBYY FineReader更稳。它识别后会单独生成一个Word文档,尽量保留原排版结构,甚至能把表格识别成可编辑的表格对象。代价是软件体积大、启动慢、价格更高。普通资料用Acrobat就够,只有碰上难啃的排版再上ABBYY。
3.3 开源命令行实操:Tesseract 与 PaddleOCR
开发者或需要批量处理的人,开源工具是正路。
Tesseract是老牌开源OCR引擎,安装后命令行直接跑。Windows用户在GitHub下载安装包,装完记得把安装目录加入环境变量。使用前先下载中文语言包:官方语言包文件放到tessdata目录下。基础命令:
tesseract input.pdf output -l chi_sim+eng --psm 6 pdf这条命令会读取input.pdf,用简体中文加英文的混合语言模型识别,输出一个带文字层的PDF(output.pdf)和一个纯文本文件(output.txt)。--psm 6表示“统一文本块”,适合规整的单栏文档。如果文档版面复杂,改成--psm 3让引擎自动分析版面,速度和准确率会有所取舍。
PaddleOCR是百度开源的深度学习OCR工具,对中文的支持比Tesseract更好,尤其是中文标点和排版。安装方式一般按官方文档走pip安装。简单使用示例:
from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True, lang='ch') result = ocr.ocr('clean_page.png', cls=True) for line in result[0]: print(line[1][0], line[1][1])第4行输出的是识别结果和置信度。PaddleOCR还提供PP-Structure系列能力,能识别表格结构、版面恢复,对复杂材料比Tesseract省心。缺点是要配置Python环境和深度学习模型,首次运行会下载模型文件,网速差时有点磨人。
3.4 识别质量的三个关键参数:分辨率、二值化、版面模式
同样的工具,为什么有人跑出来效果好,有人跑出来全是乱码?差别基本在三个参数。
第一是分辨率。OCR的底层逻辑是字符特征匹配,像素太少时笔画连成一坨,匹配无从谈起。300dpi是保险值,重点保证长边不少于2000像素。
第二是二值化方式。很多OCR引擎自带预处理,但如果你手动调,别盲目用全局二值化。页面亮度均匀时全局阈值可以;有阴影或底色不均时,必须用自适应阈值。PaddleOCR和Tesseract对吃进图片的要求差异不大,给它们一张干净的二值图,识别率立马上来。
第三是版面分析模式。Tesseract的--psm参数就是个典型例子。PSM 6假定页面是单一文本块,适合文章、合同、信函;PSM 3允许自动检测版面,适合复杂页面。选错模式,引擎会把两栏文字混在一起读,段落顺序全错。Acrobat和ABBYY也有类似版面分析选项,默认“自动”通常问题不大,但扫描件页面变形严重时,手动指定“单栏文字”反而更稳。
3.5 识别完不等于完事:生成 Word 后的收尾工作
OCR输出Word后,千万别直接交差,这里面至少有三件事要做。
一是清理样式。OCR生成的Word经常会塞进来一些莫名其妙的内置样式和空白段落。全选后把字体统一成你需要的正文格式,删掉多余空行,再把标题用样式管理器调整好。这一步能让文档从“机器味”变成“人做的”。
二是校对关键信息。OCR对常见汉字识别已经很准,但对数字、字母、符号仍然容易翻车。尤其合同里的金额、身份证号、电话号码、邮箱地址,一定要肉眼核对。识别错一个字,可能就导致一份合同金额对不上。
三是检查阅读顺序。双栏文档、表格混排最容易出现顺序错乱。Acrobat导出的Word有时把左栏末尾和右栏开头接在一起,转出来的内容根本没法读。要快速检查的办法是随机抽几段,按原扫描件的版面顺序读一遍,不对就调整段落顺序。
4. 进阶场景:公式、表格、特殊符号不能照搬通用 OCR
4.1 数学公式:先用公式识别,再转 Word
通用OCR解决不了数学公式。你让它识别一行“ax²+bx+c=0”,它要么当成普通文字处理,要么输出一堆乱码符号,因为公式有上下标、分式、根号、求和符号这些特殊结构,普通字符级别的识别完全不够用。
正确做法是先用公式识别专用工具。以Mathpix Snip为例,截图或上传公式图片,它会返回该公式对应的LaTeX代码和MathML格式。你拿到LaTeX代码后,两条路可以走:一是用Pandoc之类的工具把LaTeX转成Word文档里的OMML公式;二是直接在Word中粘贴LaTeX代码,新版Word的“插入→公式”支持LaTeX输入。
如果你习惯用Mathtype,注意一个问题:不要直接把公式识别出的LaTeX代码粘贴到Mathtype里,很多“提示没有找到需要转换的公式”的报错,就是因为粘贴的内容格式不符预期。先粘贴到Word的公式编辑器,再通过Mathtype转换,或者确认源格式确实是LaTeX,路径对了才不报错。
4.2 表格:别指望一次还原
表格是另一个重灾区。扫描件里的表格线、合并单元格、跨行内容,在OCR看来是“一堆横线和竖线夹着若干文字”,它很可能给你输成一个没有边框的文本堆。
如果你只是要表格里的文字内容,直接用OCR识别文字,再自己贴进Excel或Word表格里重建就行。如果你想连表格结构一起还原,用Acrobat或ABBYY的“导出表格”功能,实测对简单二维表效果尚可,复杂合并单元格会出错。开源方案里有PaddleOCR的PP-Structure表格识别能力,能输出行列结构和单元格内容,对规范性较好的扫描表准确率不错,但也不是100%可靠。
无论用哪个工具,表格识别后都必须逐行核对。尤其带公式计算的表格,比如合计、增长率,数字错了后面全乱。我的做法是先把扫描件放大到150%再和识别结果对照,重点看小数点、千分位分隔符。
4.3 音标、特殊符号:字符集是命门
英语资料里的音标、化学结构式里的特殊字符、数学里的希腊字母,这些是OCR识别的“盲区”。原因很简单:OCR语言模型的训练数据里,这些字符出现频率低,特征模板覆盖不完整。
处理音标这类特殊符号,我的经验是不要指望OCR一步到位。先让OCR把普通英文识别出来,音标部分大概率会变成乱码或者被识别成普通英文字母。识别完成后,手动打开“插入符号”面板,把缺失的IPA音标字符补上。前提是你的Word里装了带国际音标支持的字体,比如Charis SIL、Doulos SIL,否则显示出来可能就是方块。
更省力的办法是从源头规避:如果电子版原本存在,只是被打印成了纸质件再扫描,不如去找原始的电子文档。OCR是最后手段,不是第一选择。
4.4 中英文混排:语言包别选错
中英文混排是中文文档的常态,但很多人OCR时只选了“简体中文”语言包,结果英文单词的识别结果一言难尽。Tesseract里要手动指定-l chi_sim+eng,PaddleOCR的lang参数选ch即可自动混排处理。语言包选错的典型症状是:英文段落里出现全角逗号、引号、空格,常见于合同和科技论文。
另一个容易忽略的点是中文文档里的中文标点。OCR引擎对中文标点的识别相对成熟,但“。”(句号)和“.”(点号)、“,”(逗号)和“,”(半角逗号)经常随上下文混用。生成Word后,用查找替换把全角标点和半角标点统一一遍,文档看起来才正常。
5. 常见问题与排查技巧实录
5.1 Word 关闭/保存卡顿,多半是文档“虚胖”
不少人在处理OCR转出的Word时发现关文档特别慢,甚至鼠标转圈半天不响应。问题大概率出在文档里嵌入的大量图片和OLE对象上。OCR输出Word通常会附带原扫描图片,加上Mathtype公式、嵌入字体这些元数据,一个几十页的Word轻松到几十上百MB,关闭时Word要处理这么多内容自然卡顿。
解决办法有几个层面:第一,在Word里全选图片,压缩图片分辨率到150dpi左右,文件体积立降。第二,如果不需要嵌入字体,在“文件→选项→保存”里取消“将字体嵌入文件”。第三,清掉不用的样式和加载项,有些卡顿源于第三方插件在关闭时做校验。第四,遇到特别顽固的卡顿,可以先把文档另存为docx(哪怕它本身是docx),再关闭一次,常能触发一次元数据清理。
5.2 OCR 报错“no text detected”怎么办
Tesseract有时会报类似“OCR could not create a primitive... no text detected”的错,PaddleOCR也可能返回空结果。先别急着怪工具,按顺序排查:打开原图看分辨率,过低就重扫或放大;看页面方向,旋转了90度的页面经常检测不到文字;看对比度,文字和背景颜色太接近时程序根本分不清边界;最后看图片格式,某些压缩过度的JPEG会丢失大量细节,换成PNG或TIF格式再试。
注意:如果扫描件的每一页都提示“no text detected”,先检查是不是语言包缺失或路径配置错误。Tesseract装好中文语言包之前,识别中文文档报这种错太常见了。
5.3 常见误识别速查表
OCR绝不是100%正确,有些错误模式是固定的,记住了排查效率翻倍。
| 原字符 | 常见误识别 | 出现场景 | 处理建议 |
|---|---|---|---|
| 0 | O、o、D | 数字和字母混排 | 按上下文修正,金额里优先判断为0 |
| 1 | l、I、 | 字体无衬线时易错 | |
| rn | m、n、rm | 带衬线字体 | 单词整体判断 |
中文句号。 | 被识别为英文. | 中英文混排 | 全文统一查找替换 |
| 下标 | 被提为普通字符 | 化学式、数学公式 | 用公式工具重建 |
| 表格线 | 变为竖线“|” | 表格密集处 | 删除竖线,重建表格 |
| 中文姓名 | 生僻字错字 | 扫描质量差 | 姓名必须人工核对 |
这张表是我实际踩坑的浓缩版。前两类“数字字母不分”最危险,因为有时错的部位很隐蔽,比如合同编号里的一个字母,直到用的时候才发现。
5.4 转出来的 Word 表格列宽无法拖动
从PDF转Word的表格,经常出现列宽没法调、拖动时整个表格乱跳的情况。这多半是因为转换工具在生成表格时自动勾选了“根据窗口调整大小”或“自动调整内容”,并锁定了列宽。
解决办法:选中表格,进入“表格属性”,在“选项”里取消“自动重调尺寸以适合内容”;然后在“布局”选项卡里找到“自动调整”,改成“固定列宽”。如果还拖不动,看表格是不是被嵌入了文本框或其他对象,取消组合后就能操作。如果你是程序生成Word表格,比如用Apache POI,给表格设置固定宽度要和单元格宽度配合,单位要转成twip,常见的坑是只设置了表格级别没设置单元格级别,导致实际输出时列宽不生效。
5.5 Word 宏与批量处理:先解决安全设置
批量处理大量OCR转出的Word时,很多人会录宏或写VBA脚本来清洗格式。结果打开文档时弹窗提示“宏已被禁用”,因为Word宏安全级别默认较高,尤其是来源不明的文档。
我的建议是,自己写的宏请在“文件→选项→信任中心→信任中心设置→宏设置”里启用“禁用所有宏,并发出通知”,然后单次启用。处理完毕后调回安全级别。别为了省事永久禁用宏保护,遇到携带宏的文档风险太大。文档来路不明时,先用“打开并修复”模式,少很多麻烦。
5.6 二次扫描会要了 OCR 的命
处理过一批“扫描件的扫描件”,也就是有人把打印出来的A4纸又拿去扫描了一遍,结果页面出现明显的网纹和墨点,文字边缘全是颗粒感。这种文件无论怎么调,OCR识别率都上不来。因为每经过一次打印扫描,图像细节都会损失一轮,字符边缘的信息早就丢得差不多了。
如果你手里只有这种“二次扫描件”,最好的办法是去找原始电子版,没有的话,只能反复清洗图像,但效果有限。这也从侧面说明第2章“规范PDF”的重要性:初始扫描质量直接决定了本次转换的天花板。
5.7 隐私提醒:保密文件别用在线 OCR
最后说一个容易被忽视但很重要的问题。在线OCR很方便,但你的文件经过第三方服务器,等于把内容交到了别人手里。合同、身份证、病例、财务报表这类敏感信息,我不建议上传到任何在线工具。本地工具有Tesseract和PaddleOCR两条开源路线,加上Acrobat这类商业软件,完全能做到离线识别,虽然配置成本高一点,但安心得多。
我自己的习惯是:工作电脑常备一份便携版OCR工具,配合规范PDF流程,无论有没有网都能完成转换,速度和隐私都可控。
整个流程走下来,我个人最大的体会是:OCR这活儿,七分在准备,三分在识别。把扫描件做成一份规范PDF,后面几乎一路绿灯;跳过规范步骤直接识别,后面会不断返工。刚开始做的时候,我也迷信过各种“一键转换神器”,踩了一圈坑才明白,工具只是执行者,真正的质量掌控在前置的图像处理和事后的校对环节。这套流程现在已经成为我处理纸质文档的固定动作,如果你按这个方法试一次,会发现扫描件转Word这件事,其实比想象中简单得多。