我有一个使用正则表达式从文本(format =mm)中提取日期的代码。
备注:文本是在票据图像上使用OCR获取的。因此,预期的日期格式是,但是它可以是任何随机文本,因为它是使用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',它就会失败。如何为这样的场景编写代码,其中它还选择了最接近的匹配项。
发布于 2015-12-04 10:42:16
发布于 2015-12-04 10:33:31
--正如您提到的Levenshtein距离,这并不是标题所要求的,但可能会对您的场景很有用。
from dateutil.parser import parse
s = 'This is o text xtractud fram OCR O9-11-201'
parse(s, fuzzy=True)
datetime.datetime(201, 9, 11, 0, 0)Dateutil提供了一个模糊日期时间解析器。
这适用于'09-11-201',但不适用于'09-11-201 5'
https://stackoverflow.com/questions/34085616
复制相似问题