在介绍新版前,稍稍解释下背景知识。
OCR 服务已经识别出文字了,iText 还要做什么?
iText 发布后,受到很多朋友的欢迎和好评,解决了诸如扫描版 PDF 无法复制等问题。
不过,也有一些朋友有些误解,觉得 iText 仅仅是调用了 OCR 服务,是个壳而已。其实,并不尽然。
虽然,我觉得用户并不需要知道这些软件背后的故事,只要软件好用即可。不过看来,既然有误解、有好奇,我还是简单提及一些吧。
OCR 服务识别 后,得到的是这样的结果:各文字片断及其位置。
但,如果根据这些信息还原出自然语境下的段落?这是很难的。
比如,对于下面这张图:
OCR 识别出来的结果是类似这样的(为了方便示意,我在各行间额外加了空行):
|
|
你可能觉得,这没什么呀,我自己手动把多余的换行符删掉不就可以了?你说的对。不过,这样的体验并不爽。
为了让你用的爽、少了这步手动操作,我自己试着列出常见的段落分布,分析其中的位置规律,实现相应的识别段落的算法。
目前来看,效果还是可以的:
|
|
注:以上是 iText 识别并优化后的结果,未加手工编辑;其中的标点符号也已修正。
iText 第一版发布后,收到用户反馈的一些图片,一些段落的识别有问题。于是,我花了不知道几个小时,重写了段落识别相关的算法。目前,对于中英文混排,在使用腾讯服务时,段落识别的效果已经很好了。
不过,并不完美。主要是在一些场景下,除非结合语义识别,否则是无法仅根据位置信息来划分段落的。如果你发现有问题的图,欢迎发给我,我来优化算法。
下面给出一些典型的含段落的图,大家可以自己试试。
图 1:https://ps.toolinbox.net/006tKfTcgy1fm6c8xxge5j30mw0q67i2.jpg
图 2:https://ps.toolinbox.net/006tKfTcgy1fm6c99zhzij30te0wuahg.jpg
识别后的文本优化
另外,段落识别只是对 OCR 服务优化的一部分,还有文本的优化,比如中英文之间需要增加空格等等。
如果说段落识别很麻烦,文本优化则更多麻烦,根本的原因在于:需要对内容进行识别。比如:
- 英文段落首字母大写,这规则没错吧,但对于 “iPhone is a good phone.” 这样的情况,iPhone 是特定词汇,i 不应该大写。
- 中文文字后的 ‘.’ 应该使用全角的 “。”,这规则也没错吧,但对于『今天天气真热啊…』,明显又不应该替换;亦或是 JSON 数据『”name”: “张飞”』中的 “ 也不应该被替换。
- 以及其他无数多的例子。
没办法,只能有所取舍。目前,iText 主要完成了这些部分的优化:
- 自动识别段落
- 中文环境使用全角标点符号
- 中文与英文字母、数字间增加空格
- 删除中文字符间、英文字符与标点符号间的多余空格
- 英文首字母大写
手动选择 OCR 服务
目前,如果你在国内使用 iText,默认使用的是腾讯的服务;国外则使用 Google.
如果你有 Google 信仰、或者需要识别日文等其他语言,可以 右击 iText 菜单栏图标,手动选择使用腾讯或 Google OCR 服务。
不过,从实测和目前优化的情况来看,中文还是建议使用腾讯;大家可以自行测试。
下载
新版 iText 已上架 Mac App Store,点击下载
每月可免费识别 20 次,订阅 iText 高级版即可无限次识别。高级版限时 6 折优惠:¥3/月、¥30/年,持续至 12.12
如果你觉得 iText 还不错,还请帮忙 在 App Store 评论;如果你觉得 iText 还可以改进,欢迎:
- 在这里留言
- 加入 Telegram 群
- 微信扫码入群: