ABBYY OCR技术教电脑阅读缅甸语(下)
文本行检测到之后,我们开始寻找单词和字母之间的间隙,这一次,我们运用了水平直方图,将大的间隙假设为单词之间的空隙,小的间隙理解为字母之间的空隙,检测缅甸文本中的空隙几乎没有出现问题,不像泰语,几乎没有空隙。(我们的OCR技术可以识别泰语文本,多达200种其他语言)
将文本行划分为更小的片段之后,我们尝试将片段划分为单个字符,再一次在直方图上观察高峰和低谷值,低谷对应于字母之间的可能间隙,有些间隙可以很确定地检测到,有些则需要通过各种试探法进行验证。
以下图形展示了英语单词的直方图:

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

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

没有标准的字母列表,因此我们手动编译,为每个字母指定所有可能的字符,再在候选单词产生的时候将字母翻译成字符。
正如我们之前注意到的,缅甸脚本中存在大量可分辨的字符,其中很多可以与他们主字母融合形成新字符:

如果某个变音符与其字母分离,我们先识别该字母,然后识别变音符,最后结合识别结果获获取新字母。如果某个变音符和其字母形成不可分割的单元,我们会尝试整体识别。
融合字符在缅甸书写系统中如此普遍以至于我们不得不提升技术以识别3500种新字母,这远远超过我们通常添加新语言的工作量。
字母识别完成之后,必须将其翻译成Unicode字符,然后组成单词。该过程对于欧洲语言相当简单,只需一个一个识别字符然后翻译为Unicode,但针对缅甸融合字符,则需要特别对待。
在翻译字符过程中有一个特定的正确顺序,在这个顺序中缅甸字母必须通过键盘输入,这样Windows才能将它们连接起来,有些字符必须在其他所有字符输入之后再进行输入,这样Windows才能在划分音节一开始将它们放置在正确的位置。
例如:在文本编辑器中键入下面这个单词:

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

我们已在我们的技术中加入了特殊修正后模块,确保结果单词遵从这些键入规则,所有文本都识别完成之后,模块再次阅读识别的文本,检查字符顺序是否正确,缅甸语是一种结构非常好的语言,有足够的正式规则支持这些检查。
完成此项目花了我们4个月时间,最终识别准确度高达97%(客户要求至少94%),未来应该会实现识别更多的缅甸语字体。
ABBYY OCR技术教电脑阅读缅甸语(下)的更多相关文章
- ABBYY OCR技术教电脑阅读缅甸语(上)
缅甸联邦共和国,原名缅甸,是东南亚的一个国家,从1962年到2010年,缅甸一直被政变后上台的军政府统治,直至最近5年它才对外界开放,与其他国家建立了贸易与文化联系. 缅甸语由很多方言组成,但所有方言 ...
- OCR技术
"起初我写这篇教程是在情人节,OCR可以带给你一整年的爱". 你之前肯定已经见过,OCR技术被应用于在平板电脑上将扫描文件处理成手写字迹,还被应用于谷歌最近添加到他们的Transl ...
- 教你阅读 Cpython 的源码(二)
第二部分:Python解释器进程 在上节教你阅读 Cpython 的源码(一)中,我们从编写Python到执行代码的过程中看到Python语法和其内存管理机制. 在本节,我们将从代码层面去讨论 ,Py ...
- [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介
[Mugeda HTML5技术教程之2] Mugeda HTML5动画平台简介 摘要:Mugeda提供基于云的平台,供开发人员和设计人员快速的开发.发布和统计基于HTML5的,包含丰富动画和交互的移动 ...
- Python爬虫入门教程 56-100 python爬虫高级技术之验证码篇2-开放平台OCR技术
今日的验证码之旅 今天你要学习的验证码采用通过第三方AI平台开放的OCR接口实现,OCR文字识别技术目前已经比较成熟了,而且第三方比较多,今天采用的是百度的. 注册百度AI平台 官方网址:http:/ ...
- OCR技术浅探:特征提取(1)
研究背景 关于光学字符识别(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研究人员对相关的技术研究已久,也有不 ...
- 10、技术经理要阅读的书籍 - IT软件人员书籍系列文章
技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...
- [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏
本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
随机推荐
- C中const 定义常量的使用
先看如下代码 #include <stdio.h> #include <string.h> #define ARRSIZE(a) (sizeof(a)/sizeof(a[0]) ...
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) 题解【ABCDE】
A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后c ...
- ext2文件系统学习(一)
源码分析网上太多了,不写了,记录简单的实践步骤: 1. 创建ext2文件镜像并映射 cd /tmp count= mkfs.ext2 ext2-1M.img mkdir ext2 sudo mount ...
- spyder 安装
https://www.cnblogs.com/pcat/p/5398997.html
- VS2013中Python学习笔记[环境搭建]
前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色 ...
- caffe.pb.h丢失问题解决方法
https://blog.csdn.net/ThomasCai001/article/details/53940430 错误提示 fatal error: caffe/proto/caffe.pb ...
- boolean和Boolean, char和Character , byte和Byte, short和Short, int和Integer , long和Long , float和Float, double和Double的区别 , String和StringBuffer的区别
Java提供两种不同的类型:引用类型和原始类型(内置类型).Int是java的原始数据类型,Integer是java为int提供的封装类. Java为每个原始数据类型提供了封装类. 其中原始数据类型封 ...
- C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程
这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务 ...
- DHCP服务原理与搭建(Linux系统+路由器,二选一方案)
大家都知道上网的最基本前提是要在终端上设置IP.子网掩码.网关.DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP.掩码.DNS地址也能上网,这是什么原因呢?其实 ...
- maven 解决jar冲突
那句话怎么讲来着的... 引用 如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱. Maven对于新手来说是<步步惊心>,因为它包罗万象, ...