文本行检测到之后,我们开始寻找单词和字母之间的间隙,这一次,我们运用了水平直方图,将大的间隙假设为单词之间的空隙,小的间隙理解为字母之间的空隙,检测缅甸文本中的空隙几乎没有出现问题,不像泰语,几乎没有空隙。(我们的OCR技术可以识别泰语文本,多达200种其他语言)

将文本行划分为更小的片段之后,我们尝试将片段划分为单个字符,再一次在直方图上观察高峰和低谷值,低谷对应于字母之间的可能间隙,有些间隙可以很确定地检测到,有些则需要通过各种试探法进行验证。

以下图形展示了英语单词的直方图:

缅甸脚本中的大量半圆字符产生了很多“错误”高峰和低估,使得检测空隙变得更难,但是直方图法同样适用于缅甸语。

现在我们可以尝试识别单个字符,确切地讲是字母,字母就是字符的图形表现形式,但它不是一一对应的。在欧洲文本中,一个字母可能对应多个字符(比如大写的“C”和小写的“c”属于同一个字母),且一个字符可能由多个字母传达(比如,字母“a”在不同的字体中可能由不同的字母表示)。

没有标准的字母列表,因此我们手动编译,为每个字母指定所有可能的字符,再在候选单词产生的时候将字母翻译成字符。

正如我们之前注意到的,缅甸脚本中存在大量可分辨的字符,其中很多可以与他们主字母融合形成新字符:

如果某个变音符与其字母分离,我们先识别该字母,然后识别变音符,最后结合识别结果获获取新字母。如果某个变音符和其字母形成不可分割的单元,我们会尝试整体识别。

融合字符在缅甸书写系统中如此普遍以至于我们不得不提升技术以识别3500种新字母,这远远超过我们通常添加新语言的工作量。

字母识别完成之后,必须将其翻译成Unicode字符,然后组成单词。该过程对于欧洲语言相当简单,只需一个一个识别字符然后翻译为Unicode,但针对缅甸融合字符,则需要特别对待。

在翻译字符过程中有一个特定的正确顺序,在这个顺序中缅甸字母必须通过键盘输入,这样Windows才能将它们连接起来,有些字符必须在其他所有字符输入之后再进行输入,这样Windows才能在划分音节一开始将它们放置在正确的位置。

例如:在文本编辑器中键入下面这个单词:

用户必须按照字符的下面顺序键入字符:

我们已在我们的技术中加入了特殊修正后模块,确保结果单词遵从这些键入规则,所有文本都识别完成之后,模块再次阅读识别的文本,检查字符顺序是否正确,缅甸语是一种结构非常好的语言,有足够的正式规则支持这些检查。

完成此项目花了我们4个月时间,最终识别准确度高达97%(客户要求至少94%),未来应该会实现识别更多的缅甸语字体。

ABBYY OCR技术教电脑阅读缅甸语(下)的更多相关文章

  1. ABBYY OCR技术教电脑阅读缅甸语(上)

    缅甸联邦共和国,原名缅甸,是东南亚的一个国家,从1962年到2010年,缅甸一直被政变后上台的军政府统治,直至最近5年它才对外界开放,与其他国家建立了贸易与文化联系. 缅甸语由很多方言组成,但所有方言 ...

  2. OCR技术

    "起初我写这篇教程是在情人节,OCR可以带给你一整年的爱". 你之前肯定已经见过,OCR技术被应用于在平板电脑上将扫描文件处理成手写字迹,还被应用于谷歌最近添加到他们的Transl ...

  3. 教你阅读 Cpython 的源码(二)

    第二部分:Python解释器进程 在上节教你阅读 Cpython 的源码(一)中,我们从编写Python到执行代码的过程中看到Python语法和其内存管理机制. 在本节,我们将从代码层面去讨论 ,Py ...

  4. [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介

    [Mugeda HTML5技术教程之2] Mugeda HTML5动画平台简介 摘要:Mugeda提供基于云的平台,供开发人员和设计人员快速的开发.发布和统计基于HTML5的,包含丰富动画和交互的移动 ...

  5. Python爬虫入门教程 56-100 python爬虫高级技术之验证码篇2-开放平台OCR技术

    今日的验证码之旅 今天你要学习的验证码采用通过第三方AI平台开放的OCR接口实现,OCR文字识别技术目前已经比较成熟了,而且第三方比较多,今天采用的是百度的. 注册百度AI平台 官方网址:http:/ ...

  6. OCR技术浅探:特征提取(1)

    研究背景 关于光学字符识别(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研究人员对相关的技术研究已久,也有不 ...

  7. 10、技术经理要阅读的书籍 - IT软件人员书籍系列文章

    技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...

  8. [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏

    本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...

  9. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏

    本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...

随机推荐

  1. memcached 一致性哈希算法

    本文转载自:http://blog.csdn.net/kongqz/article/details/6695417 一.概述 1.我们的memcache客户端使用了一致性hash算法ketama进行数 ...

  2. Android native thread相关

    几个主要的source code路径: /system/core/include/utils/threads.h /system/core/include/utils/Thread.h /system ...

  3. python 爬虫不停换代理

    内网看到的一个小技巧,卧槽,感觉真TM厉害 函数均放到main函数内即可 def get_proxy(): url="http://www.xicidaili.com" req=u ...

  4. 喵哈哈村的魔法考试 Round #8 (Div.2) 题解

    喵哈哈村的美食面馆 签到题,就不停的if就好了. #include<bits/stdc++.h> using namespace std; string name[5]={"ni ...

  5. Standard Series Values in a Decade for Resistances and Capacitances E24 E48 E96

    E3     50% tolerance (no longer used)E6     20% tolerance (now seldom used)E12   10% toleranceE24    ...

  6. [web前端] npm install -save 和 -save-dev 傻傻分不清

    本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 最近在写Node程序的时候,突然对 npm install ...

  7. CustomJsonDateDeserializer @JsonDeserialize(using = CustomJsonDateDeserializer.class) Jackson 反序列化Date时遇到的问题 java中json日期属性反序列化

    public class CustomJsonDateDeserializer extends JsonDeserializer<Date> { @Override public Date ...

  8. Juno Puppet Opertaors Meetup小结

    今年五月刚结束的Juno OpenStack Summit是半年一度的Openstack盛会,抛去那些迷花渐欲乱人眼的商业活动,我们来看一看本届summit puppet-openstack社区有哪些 ...

  9. windows性能监控

    see also:http://www.cnblogs.com/upDOoGIS/archive/2010/11/19/1881970.html CPU Processor : % Processor ...

  10. PL/SQL学习笔记之循环语句

    一:基本循环 LOOP 循环体: 退出循环: )IF condition THEN exit; END IF; ) exit WHEN condition; END LOOP; 二:WHILE循环 W ...