如何用 OCR 从图片中提取文字
一句话概括: 怎样拍摄才能识别成功、表格与手写该有什么预期,以及如何从一张照片走到可编辑、可搜索的文字。
文字识别已经好到瓶颈几乎从不在软件,而在照片本身。多数令人失望的 OCR 结果,来自一张本来就不可能成功的图:斜着拍、一半在阴影里,或书页正朝镜头外弯曲。把拍摄做对只要几秒,对结果的影响大过任何设置。
把页面拍好
识别是逐行进行的,所以任何让文字行形状变形的因素——透视、弯曲、横穿页面的阴影——都会直接损失准确率。相机需要的是一个平整、光照均匀、正对镜头的矩形。
书籍是常见的困难场景,因为靠近书脊处页面会弯。把页面压平,或者左右两半分别拍摄,可以解决其中大部分问题。
- 让相机与页面平行,不要斜着拍
- 使用均匀的散射光;避免硬阴影横穿文字
- 让文字区域充满画面,而不是把整张桌子拍进去
- 把弯曲的书页压平,或左右两半分开拍
OCR 擅长什么,不擅长什么
清晰、端正、光照良好的印刷体基本已经解决。书中的正文、幻灯片、票据、印刷讲义,通常识别得足够干净,可以直接编辑而不必重打。
有三类仍然不可靠,在依赖输出之前值得先知道:复杂表格即使每个单元格都读对,结构也会丢失;手写因人而异,差别极大;密集的多栏排版可能被按错误顺序读取。
- 可靠:印刷正文、幻灯片、标识牌、票据、印刷讲义
- 不可靠:手写、复杂表格、艺术字与装饰性字体
- 需仔细核对:数字、编号,以及任何你要据以行动的内容
端侧识别,以及它在隐私上的含义
当文字识别在设备本地运行时,图片不必离开设备就能变成文字。对敏感材料——一份合同、一封医疗信函、内部文档的某一页——这是实质差别,而不是技术细节。
MemoFlow 在受支持的采集场景中于设备端进行文字识别。无论你用哪个工具,在拍摄涉密内容之前,值得先弄清楚该功能落在这条线的哪一侧。
按正确顺序做整理
识别出的文字是一整块,而最快的整理方式不是从头读到尾。先修结构,再去扫查那些集中出现在可预测位置的错误。
数字值得单独对待。读错的数字在正文中是隐形的——它看起来和正确的一模一样——所以任何你打算使用的数值,都应对照原图核对。
- 先恢复段落分隔与小标题
- 再对照照片核对数字、编号与专有名词
- 删掉杂质:页码、页眉,以及被当成字符读入的杂痕
让图片和文字待在一起
照片是这段文字的证据。两者放在同一条笔记里,可疑的数值一秒就能核对,引文在使用前也能被验证。
它同时保留了 OCR 无法捕捉的东西:图表、版式,以及你摘取的那段旁边手写的批注。
要点
- 多数 OCR 失败其实是拍摄失败——拍平、正对、光照均匀。
- 印刷正文可靠;手写和复杂表格不可靠。
- 端侧识别意味着敏感页面不必离开设备。
- 先修结构,再对照原图核对数字与名称。