у меня есть несколько текстовых файлов счетов-фактур компании, которые имеют различные типы форматов даты
dd/mm/yyyy
mm:dd:yy
dd,monthname,yy
yearname,monthname,dd
и так далее.
Theres много уникальных моделей, которые не могут быть перечислены здесь.
Проблема в том, что я использовал сочетание регулярных выражений и (в основном), если еще сопоставление строк, чтобы выяснить эти даты, но я уверен, что есть лучший способ их идентифицировать вместо жесткого кодирования программы для поиска различных шаблонов
Я также хотел бы извлечь другие функции, такие как сумма «ВСЕГО», которая также имеет форматы, такие как
Общая
$ 123
Всего $ 123
$ 123
Итого
123 $ Итого
Вот несколько примеров текстовых файлов
Demo Company INVOICE
Demo Company Phone : 141-222-3333 Invoice# 1024
1234 Main Street Fax: 222-3984444 Account# C1000
Ashland, KY 41102 Email : sales@example.com
Date 01-08-2009
Due By 02-05-2009
‘Subtotal $212.44
Tax $1.25
Total $213.69
Balance Due $213.69
SAMPLE PURCHASE ORDER
ToNGE
Purchase Order Number 2
FROM: Purchase Order Date 6:15:2
Your Company
1122 Cherry Lane
San Diego, CA 92176
1 | MH1000 | MATHOIST STORAGE SYSTEMFOR (@)45°x $8920.00 | $8,920.00
MATS (see product description)
1 [NA Mat Hoist Voltage??? 208V, 230V or 460V Nec Nec
6 |cL7 CL-7 UNIT CLAMP
SA8.75 $292.50
123 Anywhere St.
Some City, CA 91000
Phone (555) 555-1212 Fax (555) 555-5555
P.O. NUMBER: 1234
P.O. DATE: 4/15/13
SUBTOTAL $3000
SALES TAX $s 240
TOTAL $3240
Вот код, который я использую для извлечения даты и полного извлечения
def extractdate():
with open(inpf, "r") as ifile:
for line in ifile:
if line.startswith("DATE"):
print(next(ifile, '').strip())
elif line.startswith("P.O. DATE"):
if "P.O. DATE" in line:
# print(line)
print('')
elif str("Date") in line:
# print(line)
print('')
elif str("date")in line:
# print(line)
print('')
def totalamount():
with open(inpf, "r") as ifile:
for line in ifile:
if 'TOTAL' in line or 'Total' in line:
s = ""
for i in range(len(line)):
if line[i].isdigit():
s += line[i]
elif not line[i].isdigit() and line[i-1].isdigit():
break
Можно ли каким-то образом использовать машинное обучение и обучать модель для извлечения этих функций?