Я извлек некоторую информацию, связанную со счетами, из тела письма в строки Python, моя следующая задача - извлечь номера строк из строки.Формат электронных писем может варьироваться, поэтому становится трудно найти номер счета из текста.Я также попробовал «Распознавание именованных объектов» из SpaCy, но, поскольку в большинстве случаев номер счета-фактуры указывается в следующей строке из заголовка «Счет-фактура» или «Счет-фактура №», NER не понимает отношения и возвращает неверные данные.
Ниже приведены 2 примера текста, извлеченного из тела письма:
Пример - 1.
Dear Customer:
The past due invoices listed below are still pending. This includes the
following:
Invoice Date Purchase Order Due Date Balance
8754321 8/17/17 7200016508 9/16/18 140.72
5245344 11/7/17 4500199620 12/7/18 301.54
We would appreciate quick payment of these invoices.
Пример - 2.
Hi - please confirm the status of below two invoices.
Invoice# Amount Invoice Date Due Date
7651234 $19,579.06 29-Jan-19 28-Apr-19
9872341 $47,137.20 27-Feb-19 26-Apr-19
Моя проблема заключается в том, что если я преобразую весь этот текст в одну строку, то это будет выглядеть примерно так:
Invoice Date Purchase Order Due Date Balance 8754321 8/17/17
7200016508 9/16/18 140.72
Как видно, номер счета-фактуры (в данном случае 8754321) изменил свою позицию и не 'больше не следуйте ключевому слову "Счет-фактура", которое сложнее найти.
Мой желаемый вывод выглядит примерно так:
Output Example - 1 -
8754321
5245344
Output Example - 2 -
7651234
9872341
Я не знаю, как я могу получить текст только под ключевым словом "Invoice" или "Invoice #" это номер счета.
Пожалуйста, дайте мне знать, если потребуется дополнительная информация.Спасибо !!
Редактировать: Номер счета-фактуры не имеет заранее определенной длины, он может быть 7 цифрами или может быть больше этого.