我试图从图像的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
我有兴趣提取报告日期,即2015年6月29日。此外,我对将病人的详细信息按时间顺序存储在数据库(MongoDB)中也感兴趣。因此,为了便于以后的查询,我需要以标准化格式存储日期。欢迎所有建议。
编辑-由于数据是作为一个OCR响应,往往会有很多噪音,有时误解字符。是否有任何方法可以对字符串搜索具有更好的容错能力。
re.search(r'Date:([0-9]{2}\/[0-9]{2}\/[0-9]{4})', ocr_response).group(1)上面的语句显式地查找数字,但如果某个数字没有作为字符读取或错误替换怎么办?
发布于 2016-01-28 04:34:11
使用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发布于 2019-07-17 08:52:50
您应该使用好的NER(命名,实体识别)模型,如果您有大量带注释的培训数据,您可以自定义培训您自己的模型,或者您可以使用不需要注释数据集的预培训模型。
Spacy是NER的一个很好的Python库。查看下面的链接- https://spacy.io/
它使用后端的深层神经网络来识别文本中的各种实体(在您的例子中是日期)。
希望它为您提供了正则表达式的替代方案,谢谢您提前投票。
https://stackoverflow.com/questions/35052747
复制相似问题