我有一个使用正则表达式从文本 (format = mm-dd-yyyy) 中提取日期的代码。
注意:文本是在票据图像上使用 OCR 获得的。因此,预期的日期格式是 mm-dd-yyyy,但它可以是使用 OCR 获得的任何随机文本。
import re
date_reg_exp = re.compile('\d{2}[-/.]\d{2}[-/.]\d{4}') #works for mm-dd-yyyy
matches_list=date_reg_exp.findall(test_str)
for match in matches_list2:
print match
如果我有一个字符串 'This is a text extracted from OCR 09-11-2015' 上面的代码有效并得到日期作为输出 '09-11-2015'。但是,如果我有一个字符串 'This is o text extractud fram OCR 09-11-201 5' 或 'This is o text xtractud fram OCR 09-11-201' 或 'This is o text xtractud fram OCR O9-11-201' 它失败了。如何为这种情况编写代码,它也会选择最近的匹配项。
请您参考如下方法:
有几种方法可以实现与正则表达式的近似匹配。最“理论上直接”的方法很可能需要您执行 edit-distance -喜欢dynamic programming计算正则表达式的 DFA .
这是一个编码起来相当棘手的算法,它的实现并不多。最著名的是Agrep (从技术上讲,agrep 工具实现了多种算法,但其中最著名的是模糊正则表达式匹配)。
通过此关键字进行简短的谷歌搜索会得到 this library ,它似乎具有 Python 绑定(bind),可能正是您所需要的。
