Matlab的OCR文本识别

5
我正在尝试对这张图片进行OCR识别 -
使用MATLAB的OCR功能,我正在进行以下操作 -
I=imread('N.jpg');
r = ocr(I,'TextLayout','Word')

但我得到的不是 Text,而是一个代替它的 N 值。

r = 

  ocrText with properties:

                      Text: 'I\/

'
    CharacterBoundingBoxes: [5x4 double]
      CharacterConfidences: [5x1 single]
                     Words: {'I\/'}
         WordBoundingBoxes: [276 120 13 7]
           WordConfidences: 0.7718

基本上,我得到的文本是 I\/。我该如何解决这个问题?


1
那应该是一个 N 吗?我有点理解 OCR 会给你这个结果 XD - Ander Biguri
是的,这应该是“N”。 - user4685154
1个回答

4
你可以使用一个竖直的线形结构元素对图像进行膨胀,从而使符号在竖直方向上拉长,使其看起来更像字母N。
例如:
clear
clc

I=imread('N.jpg');

%// Line oriented at 90 degrees.
SE = strel('line',4,90);
I = imdilate(I,SE);

imshow(I)

r = ocr(I,'TextLayout','Word')

图片:

在此输入图片描述

现在看起来像是一个N...

输出结果:

r = 

  ocrText with properties:

                      Text: 'N

'
    CharacterBoundingBoxes: [3x4 double]
      CharacterConfidences: [3x1 single]
                     Words: {'N'}
         WordBoundingBoxes: [276 118 13 11]
           WordConfidences: 0.8150

太好了!


谢谢,这对于这张特定的图片有效。虽然我有很多类似的图片可能不起作用,但我知道如何处理这样的图片了。再次感谢。 - user4685154
1
是的,这就是我担心会发生的事情。也许你可以找到一些结构元素,通常适用于特定的字母集合... 这是一个有趣的问题。 - Benoit_11
1
纵向延伸是正确的术语 :P - rayryeng
1
@Benoit_11 - 我也不知道。我讨厌随意的踩。我的一些答案也遭到了踩,即使问题很好地被表述了。我想过一个办法,就是谁踩了必须要给出一个合理的理由...虽然这可能太过侵犯隐私了...但那些随意的踩真的让我很生气。 - rayryeng
3
我同意你的看法,@rayryeng。那也让我很生气。这已经是我两天内第二次回答被踩了,但我真的不知道为什么。我的回答可能不够优美或完善,但它确实回答了问题,而且提问者也对此感到满意。 - Benoit_11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接