1

我使用相关性在 Matlab 中制作了一个基本的 OCR 系统。(这不是一个专业项目,只是作为一个练习,我没有使用 Matlab 的 ocr() 函数)。对于干净的文本图像,我的代码几乎可以正常工作。但是,如果我使工作变得更难(将文本照片拍摄为带有角度的侧面位置),我的代码不会给出好的结果。我使用主成分分析来正确对齐文本,但如果我这样做(带角度拍照),字符非常靠近,我无法将它们分开以进行识别过程。

原始图像和后处理(自适应阈值、调整、PCA)

原始图像和后处理(自适应阈值、调整、PCA)

如何正确分隔字符?

4

2 回答 2

0

Yves 建议的替代方法是侵蚀图像。这是imerode在matlab中实现的。也许先缩放图像(尽管这里不需要)

例如使用此代码

ocr(imerode(I,strel('disk',3)))

我是你的“布尔”黑白图像,我收到

ocrText with properties:
                  Text: 'BOOLEAN↵↵'
CharacterBoundingBoxes: [9×4 double]
  CharacterConfidences: [9×1 single]
                 Words: {'BOOLEAN'}
     WordBoundingBoxes: [14 36 208 43]
       WordConfidences: 0.5477
于 2017-10-03T12:05:17.613 回答
-1

拆分字符是一个相当困难的问题。

除非字符宽度是恒定的(此图像就是这种情况,但其他字母可能不是这样),基于投影分析的方法(字符的垂直范围作为横坐标的函数)将失败。

实际上,要使一种方法有效,它必须是字体感知的,即提前知道字母的样子。换句话说,您不能将分割与识别分开。

一种可能性是尝试分解假定为由触摸字符组成的 blob(可能基于投影或已知字符大小),执行识别,并检查识别结果。最好尝试几种分解并保持最佳状态。

于 2017-10-03T09:52:25.853 回答