python 如何从 OCR 生成的文本文件中检测和提取日期数据格式
How to detect and extract date data formats from a OCR generated text files in python
我正在使用 python 从图像中创建日期提取器。
读取图像并将其转换为 .txt 文件后,我得到了一个文本文件列表,其中包含不同格式的日期。
喜欢
2019 年 4 月 20 日
20-04-2019
20-4-19
2019 年 4 月 20 日
20-19 年 4 月
2019 年 4 月 20 日
等等
我想从上面的文本中识别和提取日期数据。
知道怎么做吗?
您可以使用 dateparser 模块
import dateparser
print(dateparser.parse('20Apr-2019'))
给出:
2019-04-20 00:00:00
dateparser.parse returns 日期时间对象。
如果您的文本文件包含其他字符串,并且任务是识别日期并提取它们,您可以使用 dateparser.search.
from dateparser.search import search_dates
str1 = "Whurat UDAYA FILLING STATION MATTUPATTY ROAD MUNNAR 04865230318 ORIGINAL De DD De Da ED eH DAC Da a Da Oa DC Oa DO Dt Oe 29-MAY -2019 14:02:23 INVOICE NO: 292 i VEHICLE NO: NOT ENTERED (| NOZZLE NO : 1 f PRODUCT: PETROL RATE : 75.01 INR/Ltr VOLUME: 1.33 Ltr AMOUNT: 100.00 INR ek DA DH DE DC DE DRC DC DDC cok DE DC CDC DC DE DE S.T..No : 27430268741C M.S.T. No: 27430268741V pe TE ETA CT a DD OC DRE I BOC IE DOC Thank You! Visit Again"
print(search_dates(str1))
给出:
[('04865230318', datetime.datetime(1985, 6, 2, 2, 17, 11)), ('29-MAY -2019 14:02:23', datetime.datetime(2019, 5, 29, 14, 2, 23)), ('292', datetime.datetime(1900, 1, 1, 2, 9, 2)), ('100', datetime.datetime(1900, 1, 1, 1, 0)), ('ek', datetime.datetime(1900, 10, 1, 0, 0)), ('TE', datetime.datetime(1900, 7, 1, 0, 0)), ('OC', datetime.datetime(1900, 1, 1, 0, 0))]
如您所见,这可能需要进一步过滤以消除误报,但它应该能捕捉到您输入的大部分日期。
我正在使用 python 从图像中创建日期提取器。
读取图像并将其转换为 .txt 文件后,我得到了一个文本文件列表,其中包含不同格式的日期。
喜欢
2019 年 4 月 20 日
20-04-2019
20-4-19
2019 年 4 月 20 日
20-19 年 4 月
2019 年 4 月 20 日
等等
我想从上面的文本中识别和提取日期数据。 知道怎么做吗?
您可以使用 dateparser 模块
import dateparser
print(dateparser.parse('20Apr-2019'))
给出:
2019-04-20 00:00:00
dateparser.parse returns 日期时间对象。
如果您的文本文件包含其他字符串,并且任务是识别日期并提取它们,您可以使用 dateparser.search.
from dateparser.search import search_dates
str1 = "Whurat UDAYA FILLING STATION MATTUPATTY ROAD MUNNAR 04865230318 ORIGINAL De DD De Da ED eH DAC Da a Da Oa DC Oa DO Dt Oe 29-MAY -2019 14:02:23 INVOICE NO: 292 i VEHICLE NO: NOT ENTERED (| NOZZLE NO : 1 f PRODUCT: PETROL RATE : 75.01 INR/Ltr VOLUME: 1.33 Ltr AMOUNT: 100.00 INR ek DA DH DE DC DE DRC DC DDC cok DE DC CDC DC DE DE S.T..No : 27430268741C M.S.T. No: 27430268741V pe TE ETA CT a DD OC DRE I BOC IE DOC Thank You! Visit Again"
print(search_dates(str1))
给出:
[('04865230318', datetime.datetime(1985, 6, 2, 2, 17, 11)), ('29-MAY -2019 14:02:23', datetime.datetime(2019, 5, 29, 14, 2, 23)), ('292', datetime.datetime(1900, 1, 1, 2, 9, 2)), ('100', datetime.datetime(1900, 1, 1, 1, 0)), ('ek', datetime.datetime(1900, 10, 1, 0, 0)), ('TE', datetime.datetime(1900, 7, 1, 0, 0)), ('OC', datetime.datetime(1900, 1, 1, 0, 0))]
如您所见,这可能需要进一步过滤以消除误报,但它应该能捕捉到您输入的大部分日期。