手写字符(英文字母,汉字等)分析和修正

时间:2012-02-21 12:39:21

标签: java python image-processing internationalization

我想知道创建一个以某种形式获取手写字符,分析它们并为用户提供更正的程序是多么实用。这个想法的灵感来自于其他国家的小学生或美国的大学生学习如何用日语或中文等语言写作,其中有很多角色,即使是最轻微的错误也会产生很大的不同。

我不确定该程序将如何分析角色。我目前的想法是获得单个像素宽度线来表示笔划,比较每个像素与从数据库加载的示例字符中的相应像素的距离,并输出哪个区域需要最多的工作。知道端点也很有用。我还想告诉用户他们的角色是否可以被解释为与他们想要写的角色类似的另一个角色。

我想我需要某种类型的库来以任何形式及时完成这个项目,但是我找不到符合我所需要的程序标准的库。我研究了OpenCV,但它似乎是为了视觉而不是图像处理。我也很欣赏库/模块是python或Java,但如果绝对必要,我可以学习一门新语言。

感谢您对此项目的任何帮助。

3 个答案:

答案 0 :(得分:2)

字符识别通常使用人工神经网络(ANNs)来实现。实现并不是一项简单的任务,因为通常有很多方法可以让不同的人编写相同的角色。

神经网络的好处在于它们可以训练。因此,要从一种语言转换到另一种语言,您需要更改的是神经元之间的权重,并保持网络的完整性。神经网络也能够在一定程度上推广,因此它们通常能够应对同一字母的微小差异。

Tesseract是一个开源的OCR,它是在90年代中期开发的。您可能想要了解它以获得一些指示。

答案 1 :(得分:1)

你见过http://www.skritter.com吗?他们结合间隔识别调度来做到这一点。

我想你想要对笔画中的曲线等特征进行分类(http://en.wikipedia.org/wiki/CJK_strokes),然后作为下一层识别组件,然后估计最可能的角色。一直在统计上加权最可能的角色。如果有两种可能的匹配,您可能希望将它们显示为可能会混淆。您还需要创建一个大约3000到5000个字符的数据库,或者为雄心勃勃的数据创建最多10000个数据库。

另请参阅http://www.tegaki.org/了解开源程序。

答案 2 :(得分:1)

您可以关注此维基百科文章中的公司链接:

http://en.wikipedia.org/wiki/Intelligent_character_recognition

我不建议您自己尝试实施解决方案,特别是如果您想在不到一年或两年的全职工作中完成任务。如果一个不完整的解决方案为学生提供的指导很差,那将是不幸的。

提醒:一些提供商业ICR图书馆的公司可能不希望支持您和/或可能不提供报价。那是他们的权利。但是,如果您不愿意与特定供应商合作,请先询问其他销售联系人和/或先尝试其他供应商。

  

我目前的想法是获得一个像素宽度线来表示笔划,比较每个像素与从数据库加载的示例字符中的相应像素的距离,并输出哪个区域需要最多的工作。

只有一个像素宽的笔画表示的初始步骤比你想象的要困难得多。虽然有简单的算法(例如Stentiford和Zhang-Suen)来进行细化,但是笔划交叉和粗糙边缘存在严重的问题。这是一个经典(和未解决)的问题。细化大部分时间都在起作用,但是当它失败时,它可能会失败。

您可以使用开源库,虽然这可以帮助您学习算法及其用途,但是为了开发一个好的解决方案,您几乎肯定需要深入研究算法本身并了解它们的工作原理。这需要相当多的研究。

以下是一些有用的介绍性教科书:

    Gonzalez和Woods
  • 数字图像处理
  • Cheriet,Kharma,Siu和Suen的
  • 字符识别系统
  • 阅读大脑作者:Stanislas Dehaene

Gonzalez和Woods是图像处理的标准教科书。如果没有图像处理方面的背景知识,您将很难取得进展。

Cheriet等人的着作涉及光学字符识别(OCR)的最新技术,并涉及手写识别。您越早阅读本书,就越早了解已经尝试过的技术。

Dehaene的书是人类阅读中涉及的心理过程的可读表达,可以激发有趣的新算法的发展。