我正在通过身份证从OCR提取字符。我有4张不同的图片,但所有图片都只有1个人(我)。有4种不同的文本提取结果。例如,提取姓名
[' BEYHAN', ' S BEYHAN h of', ' 2EYHAN', ' B3YHAN U']
这种数组正在返回。所以我想提取BEYHAN,但是有一些遗漏的部分。
我可以在数组中使用最常用的单词,当然会返回BEYHAN,但这仅适用于这种情况。我想获取'2EYHAN'
和'B3YHAN'
的信息。这不是BEYHAN,但其中包含一些信息(2-EYHAN
)和(B-3-YHAN
)。那么您知道有什么算法或方法可以使用这种结果吗?
答案 0 :(得分:1)
首先,有代表字母的特定数字。因此,在wordt
中放入您需要提取的单词,然后在wordn
中放入表示的数字。下面的代码试图逐个字母地匹配单词,并检查它是否与字母或所表示的数字匹配。如果以后所有匹配,那么他们将打印整个单词,否则,他将从头开始。
我只是以数字为例。
运行代码https://onlinegdb.com/BJaknZFbE
words = ['BEYHAN', ' S BEYHAN h of', '2EYHAN', 'B3YHAN U']
wordt='BEYHAN';
wordn=["2","3","4","6","7","8"];
m=0
c=''
n=0
for word in words:
c=''
m=0
n=0
for letter in word:
if letter==wordt[n] or letter==wordn[n]:
m=m+1
c=c+letter;
else :
if len(wordt)!=m:
m=0
n=n-1
c=''
else:
print(c) ;
c=''
m=0
n=0
if len(wordt)-1>n:
n=n+1
else:
n=0
if len(wordt)==m:
print(c) ;
c=''
m=0
n=0