iText - OCR 截图识字新版:重写算法,段落识别更精准

在介绍新版前,稍稍解释下背景知识。html

OCR 服务已经识别出文字了,iText 还要作什么?

iText 发布后,受到不少朋友的欢迎和好评,解决了诸如扫描版 PDF 没法复制等问题。算法

不过,也有一些朋友有些误解,以为 iText 仅仅是调用了 OCR 服务,是个壳而已。其实,并不尽然bash

虽然,我以为用户并不须要知道这些软件背后的故事,只要软件好用便可。不过看来,既然有误解、有好奇,我仍是简单说起一些吧。微信

OCR 服务识别 后,获得的是这样的结果:各文字片段及其位置。app

但,若是根据这些信息还原出天然语境下的段落?这是很难的。测试

好比,对于下面这张图:优化

OCR 识别出来的结果是相似这样的(为了方便示意,我在各行间额外加了空行):spa

3.1新用户引导

这事的矛盾之处在于:新用户和老用户的矛盾。

进一步说,我追求程序的简洁。尤为是在用户对 itext熟悉以后,并不须要程序有过多的描述。好比,文字按

钮能够被图标按钮取代,用界面上根本看不到的快捷键进行操做,等等。可问题是,熟悉是须要一个过程,新

用户须要屡次操做后,才能掌握这些甚至有些晦涩的技巧。没有新用户,又何来老用户?

这两者的矛盾,怎么解决呢?
复制代码

你可能以为,这没什么呀,我本身手动把多余的换行符删掉不就能够了?你说的对。不过,这样的体验并不爽。.net

为了让你用的爽、少了这步手动操做,我本身试着列出常见的段落分布,分析其中的位置规律,实现相应的识别段落的算法。3d

目前来看,效果仍是能够的:

3.1 新用户引导

这事的矛盾之处在于:新用户和老用户的矛盾。

进一步说,我追求程序的简洁。尤为是在用户对 iText 熟悉以后,并不须要程序有过多的描述。好比,文字按钮能够被图标按钮取代,用界面上根本看不到的快捷键进行操做,等等。可问题是,熟悉是须要一个过程,新用户须要屡次操做后,才能掌握这些甚至有些晦涩的技巧。没有新用户,又何来老用户?

这两者的矛盾,怎么解决呢?
复制代码

**注:以上是 iText 识别并优化后的结果,未加手工编辑;**其中的标点符号也已修正。

iText 初版发布后,收到用户反馈的一些图片,一些段落的识别有问题。因而,我花了不知道几个小时,重写了段落识别相关的算法。目前,对于中英文混排,在使用腾讯服务时,段落识别的效果已经很好了。

不过,并不完美。主要是在一些场景下,除非结合语义识别,不然是没法仅根据位置信息来划分段落的。若是你发现有问题的图,欢迎发给我,我来优化算法。

下面给出一些典型的含段落的图,你们能够本身试试。

图 1:ws4.sinaimg.cn/large/006tK…

图 2:ws1.sinaimg.cn/large/006tK…

识别后的文本优化

另外,段落识别只是对 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 还能够改进,欢迎:

相关文章
相关标签/搜索