Есть структурированный текст в виде таблицы следующего вида
Позиция Код С1 С2 С3
Кошки 1000 20 30 45
Собачки 2000 13 49 -40
Попугайчики 3000 45 -90
зеленопёрые
Свинки 4000 10
Хомяки 5000 67
Необходимо извлечь данные из столбцов Код, С1, С2 и С3.
Проблема заключается в том, что в разных таблицах расстояние между столбцами может быть от 5 до 40 пробелов, при этом как видно в примере, данных в одном из столбцов может не быть вовсе. Текст в столбцах может быть центрирован по любому краю или центру.
Исходя из этих условий, использование регулярных выражений не всегда дает ожидаемый результат и данные могут быть смещены из одного столбца в другой.
Моя идея заключается в том, чтобы научить некий алгоритм разбирать текст на столбцы, проводя между ними условную границу, как бы это сделал человек и получить таким образом четыре массива, откуда уже можно по индексу строки выдернуть нужное значение.
Я не силен в ИИ и поэтому даже не знаю в какую сторону копать, стало быть, прошу подсказать направление для изучения: какой алгоритм выбрать, на чем лучше его реализовывать, как обучать и т.д.