Парсинг данных из текстовых файлов
Добрый день.
У нас есть отчеты в PDF. Мы преобразовываем их с помощью OCR в текстовые файлы (txt) (эту часть делать не надо, мы даем вам готовые файлы для парсинга в формате TXT)
Далее нам необходимо считать данные из этих текстовых файлов по определенным шаблонам. Нам необходимо находить значения полей (например, плательщик, сумма счета, позиции, цена за позицию и т.п.) и запоминать их.
Всего у нас есть 10 типов отчетов (10 организаций, которые нам присылают отчеты). Проблема в том, что данные распознанные, то позиции полей в них могут меняться.
Задача сводится к написанию и настройке регулярок для каждого типа отчета
Примеры файлов по ссылке (pdf - это нераспознанный файл, txt - распознанный)
https://drive.google.com/open?id=0B2d5x25DVw-1M2gxS3JjeDJjaUk
Поля, которые необходимо парсить - в приложении (выделены красным).
Результат работы программы - мы посылаем POST с текстовым файлом, получаем JSON со спаршенными полями
[{Имя поля:значение, ....},....]
Пример файла парсинга (начальные поля) - предоставлю исполнителю.
$travellers1="#DISPUTES.*?CARRIER.(.*?)CLAIM NUMBER.(.*?)DATE OF INJURY.(.*?)BILL CONTROL NUMBER.(.*?)(DATE|PROVIDE)+.*?EOR GENERATED.(.*?)DATE OF BILL.(.*?)DATE BILL RECEIVED.(.*?)PATIENT#si";
$travellers2="#PROVIDER INQUIRY CONTACT.(.*?)NAIC/SELF INSURED NUMBER.(.*?)CLAIM PROFESSIONAL.(.*?)CLAIM PROFESSIONAL PHONE/FAX/EMAIL.(.*?)EMPLOYER.(.*?)(DATE|PROVIDE)+#si";
$travellers3="#PROVIDER:(.*?)(NATIONAL|TAX)+.*?ID NUMBER / FEIN:(.*?)(NATIONAL|JURISDICTIONAL)+#si";
$travellers4="#NATIONAL PROVIDER IDENTIFICATION NUMBER.(.*?)(PATIENT||)+#si";
preg_match_all($travellers2, $content, $matches2);
preg_match_all($travellers1, $content, $matches);
preg_match_all($travellers3, $content, $matches3);
preg_match_all($travellers4, $content, $matches4);
for ($i=0; $i<sizeof($matches[0]); $i++)
{
echo"<h1>Case #".$i."</h1>";
echo"<table>";
echo"<tr><td><b>CARRIER:</b></td><td><input size=200 type=text value='".$matches[1][$i]."'></td></tr>";
echo"<tr><td><b>CLAIM NUMBER: </b></td><td><input size=200 type=text value='".$matches[2][$i]."'></td></tr>";
echo"<tr><td><b>DATE OF INJURY: </b></td><td><input size=200 type=text value='".$matches[3][$i]."'></td></tr>";
echo"<tr><td><b>BILL CONTROL NUMBER: </b></td><td><input size=200 type=text value='".$matches[4][$i]."'></td></tr>";
echo"<tr><td><b>PROVIDER INQUIRY CONTACT:</b></td><td><input size=200 type=text value='".$matches2[1][$i]."'></td></tr>";
echo"<tr><td><b>NAIC/SELF INSURED NUMBER: </b></td><td><input size=200 type=text value='".$matches2[2][$i]."'></td></tr>";
echo"<tr><td><b>CLAIM PROFESSIONAL: </b></td><td><input size=200 type=text value='".$matches2[3][$i]."'></td></tr>";
echo"<tr><td><b>CLAIM PROFESSIONAL PHONE/FAX/EMAIL: </b></td><td><input size=200 type=text value='".$matches2[4][$i]."'></td></tr>";
echo"<tr><td><b>EMPLOYER: </b></td><td><input size=200 type=text value='".$matches2[5][$i]."'></td></tr>";
echo"<tr><td><b>DATE EOR GENERATED: </b></td><td><input size=200 type=text value='".$matches[6][$i]."'></td></tr>";
echo"<tr><td><b>DATE OF BILL: </b></td><td><input size=200 type=text value='".$matches[7][$i]."'></td></tr>";
echo"<tr><td><b>DATE BILL RECEIVED: </b></td><td><input size=200 type=text value='".$matches[8][$i]."'></td></tr>";
echo"<tr><td><b>PROVIDER: </b></td><td><input size=200 type=text value='".$matches3[1][$i]."'></td></tr>";
echo"<tr><td><b>TAX ID NUMBER / FEIN: </b></td><td><input size=200 type=text value='".$matches3[3][$i]."'></td></tr>";
echo"<tr><td><b>NATIONAL PROVIDER IDENTIFICATION NUMBER: </b></td><td><input size=200 type=text value='".$matches4[1][$i]."'></td></tr>";
echo"</table>";
}
Додатки 2
-
Здравствуйте! А можете распознать в HTML-файл или какой-то другой формат, чтобы была явно указана позиция на страничке начала каждого блока распознанного текста?
-
Актуальні фриланс-проєкти в категорії PHP
Автоматизація переадресації листів для домену (MX forward)Є необхідність розробити MX переадресацію для поштового домену (усі листи що приходять на домен). Це має бути аналог: https://improvmx.com/ Наразі мова йде про саме технічну частину пересилання листів, без білінгу. На скільки я розумію є схоже рішення з GitHub:… PHP, Веб-програмування |
Телеграм отримати смс php
12 345 UAH
потрібно витягувати, наприклад, в блокнот на сайт повідомлення з бота. Бот не мій - сторонній. Сайт на php. PHP ∙ 1 ставка |
Gmail отримати повідомлення php
12 345 UAH
потрібно отримувати листи з пошти [email protected] через api gmail з сайту (php) завдання полягає лише в отриманні нових листів, обробку зроблю самостійно PHP ∙ 4 ставки |
Адмінка для статейного сайтуДобрий день. необхідно написати адмін панель для ігрового статейного сайту (сайт цей - https://themeforest.net/item/goodgames-portal-store-html-gaming-template/17704593) В адмінці повинно бути: 1. **Управління користувачами:** - Створення нових користувачів. -… HTML та CSS верстання, PHP ∙ 8 ставок |
Laravel + VueJS + InertiaJS ``` Ларавель + В'юДжеС + ІнерціяДжеСGood day, the project is written, it is working and ready to launch. Except for one nuance. SSR(Server Side Rendering) works very slowly, when launching a bot to check the load - the site crashes after 3-4 minutes. If you restart SSR during the check, it works but very slowly.… Javascript, PHP ∙ 2 ставки |