Python 中 OCR 响应的解析日期
Parsing date from OCR response in Python
我正在尝试从图像的 OCR 响应中读取日期。 OCR 输出是这样的。
\nPatientsName:KantibhaiPatelAgeISex:71YearslMale\nRef.by:Dr.KetanShuklaMS.MCH.\nReg.Date:29/06/201519;03\nLabRefNo;ARY-8922-15ReportingDate.29/06/201519:10\nHEMOGRAMREPORT\nTESTRESULTREFERENCEINTERVAL\n
我有兴趣提取报告日期,即 29/06/2015。我也有兴趣按时间顺序将患者详细信息存储在数据库 (MongoDB) 中。因此,我需要以标准化格式存储日期,以便将来查询。
欢迎所有建议。
编辑 - 由于数据以 OCR 响应的形式出现,因此往往会有很多噪音,有时还会出现误解的字符。有没有什么方法可以对字符串搜索有更好的容错能力。
re.search(r'Date:([0-9]{2}\/[0-9]{2}\/[0-9]{4})', ocr_response).group(1)
上述语句明确查找数字,但如果某些数字未被读取或被误认为是字符怎么办?
使用re
模块:
import re
print re.search(r'[Date:]*([0-9]{0,2}[\/-]([0-9]{0,2}|[a-z]{3})[\/-][0-9]{0,4})', ocr_response).group(1)
输出:
29/06/2015
你应该使用好的 NER(命名,实体识别)模型,如果你有大量带注释的训练数据,你可以自定义训练你自己的模型,或者你可以使用不需要注释的 pre-trained 模型数据集。
Spacy 是一个很好的 Python NER 库。看看下面的 link -
https://spacy.io/
它在后端使用深度神经网络来识别文本中存在的各种实体(您的情况下是日期)。
希望它能为您提供正则表达式的替代方案,感谢您提前投票。
我正在尝试从图像的 OCR 响应中读取日期。 OCR 输出是这样的。
\nPatientsName:KantibhaiPatelAgeISex:71YearslMale\nRef.by:Dr.KetanShuklaMS.MCH.\nReg.Date:29/06/201519;03\nLabRefNo;ARY-8922-15ReportingDate.29/06/201519:10\nHEMOGRAMREPORT\nTESTRESULTREFERENCEINTERVAL\n
我有兴趣提取报告日期,即 29/06/2015。我也有兴趣按时间顺序将患者详细信息存储在数据库 (MongoDB) 中。因此,我需要以标准化格式存储日期,以便将来查询。 欢迎所有建议。
编辑 - 由于数据以 OCR 响应的形式出现,因此往往会有很多噪音,有时还会出现误解的字符。有没有什么方法可以对字符串搜索有更好的容错能力。
re.search(r'Date:([0-9]{2}\/[0-9]{2}\/[0-9]{4})', ocr_response).group(1)
上述语句明确查找数字,但如果某些数字未被读取或被误认为是字符怎么办?
使用re
模块:
import re
print re.search(r'[Date:]*([0-9]{0,2}[\/-]([0-9]{0,2}|[a-z]{3})[\/-][0-9]{0,4})', ocr_response).group(1)
输出:
29/06/2015
你应该使用好的 NER(命名,实体识别)模型,如果你有大量带注释的训练数据,你可以自定义训练你自己的模型,或者你可以使用不需要注释的 pre-trained 模型数据集。
Spacy 是一个很好的 Python NER 库。看看下面的 link - https://spacy.io/
它在后端使用深度神经网络来识别文本中存在的各种实体(您的情况下是日期)。
希望它能为您提供正则表达式的替代方案,感谢您提前投票。