【问题标题】:Handwritten character (English letters, kanji,etc.) analysis and correction手写字符(英文字母、汉字等)分析与修正
【发布时间】:2012-03-11 18:39:53
【问题描述】:

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

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

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

感谢您在此项目中提供的任何帮助。

【问题讨论】:

  • 我会看看 Tadashii Kanji Kakitori-kun 看看他们是怎么做到的。
  • www.ml-class.org 您将在 octave 中实现字符识别系统
  • 将最终结果分析为图像是不够的。对于中文和日文字符,笔画的顺序和数量很重要。
  • “[计算机] 视觉”和“图像处理”在此上下文中是同义词。许多相同的算法用于医学成像、文本和符号的自动识别等。

标签: java python image-processing internationalization


【解决方案1】:

字符识别通常使用人工神经网络 (ANNs) 实现。看到通常有很多不同的人写相同的字符的方式,这不是一项简单的任务。

神经网络的好处是它们可以被训练。因此,要从一种语言更改为另一种语言,您只需更改神经元之间的权重,并保持网络完好无损。神经网络也具有一定的泛化能力,因此通常能够应对同一个字母的微小差异。

Tesseract 是 90 年代中期开发的开源 OCR。您可能想阅读它以获得一些指导。

【讨论】:

  • 人工神经网络解决了与字符分类相关的部分问题,也可以通过其他方法解决,例如支持向量机。这个答案中没有提到的另一个重要方面是如何表示手写字符。
  • @AlceuCosta:我同意。但我认为这个答案不能完全描述诸如 OCR 之类的东西,主要是因为我没有所需的经验。出于这个原因,我已将 OP 指向 Tesseract 项目。
【解决方案2】:

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

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

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

请注意:一些提供商业 ICR 库的公司可能不希望为您提供支持和/或可能不提供报价。那是他们的权利。但是,如果您对与特定供应商合作感到不自在,请要求其他销售联系人和/或先尝试其他供应商。

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

获取只有一个像素宽的笔画表示的初始步骤比您想象的要困难得多。尽管有简单的算法(例如 Stentiford 和 Zhang-Suen)来执行细化,但笔划交叉和粗糙边缘会带来严重的问题。这是一个经典的(且未解决的)问题。细化在很多时候都有效,但当它失败时,它可能会失败。

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

以下是一些可用作入门教科书的书籍:

  • 数字图像处理,Gonzalez 和 Woods
  • Chariet、Kharma、Siu 和 Suen 的字符识别系统
  • 在大脑中阅读,Stanislas Dehaene

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

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

Dehaene 书以可读的方式介绍了人类阅读所涉及的心理过程,可以激发有趣的新算法的开发。

【讨论】:

    【解决方案3】:

    你见过http://www.skritter.com吗?他们结合间隔识别调度来执行此操作。

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

    另请参阅http://www.tegaki.org/ 了解执行此操作的开源程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2015-03-15
      • 2017-11-21
      • 2015-04-15
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多