Всем доброго времени суток.
Пытаюсь помочь коллегам и убрать обезьянью работу по ручному извлечению данных из PDF.
Документ: Импортная накладная. Внутри намешано всё подряд: печатный текст + рукописные поля + печати/штампы.
Что конкретно происходит:
Номер накладной, станция отправления и станция прибытия пропечатаны текстом. Но на них периодически попадают печати. Для человека всё читаемо, но OCR начинает сходить с ума.
Номер вагона пишется от руки. Причём бывает так, что номер сначала пишут, потом зачеркивают и рядом пишут новый.
Дата подписания договора стоит внутри печати. Иногда её сложно разобрать даже человеку.
Номер транзитной декларации — это вообще главная головная боль. Часть номера — синяя печать, хвост — рукопись.
Хотелось бы максимально железобетонно извлекать хотя бы печатные данные, а если получится — то и остальные поля.
Вопрос к знающим: в какую сторону лучше двигаться?
Делать всё локально и модульно: детекция зон (yolo/analogue) + кропы + preprocessing/postprocessing + печатный OCR + отдельные маленькие опен-соурс модели под рукописные поля (HTR), которые при необходимости дообучить.
или
Поднимать где-нибудь VM (например в Google Cloud) и пробовать использовать какую-нибудь мощную VLM/LLM-модель для извлечения данных из сканов.
Отдельный важный фактор: утечка данных/сущностей, которую хотелось бы минимизировать (поэтому условные внешние API типа Google Vision / Azure / Amazon Textract не очень хочется использовать), ну и в принципе возможность масштабирования не хотелось бы выбрасывать из проекта.
Буду благодарен за любые советы, кейсы и рекомендации (модели/инструменты/архитектура).