Инженеры / технари / компьютерщики / программисты обычно склонны мечтать о более сложных идеях решения проблемы. Это наш идеалистический образ мышления - создавать отличные вещи. Путаница смешивает цель и решение. Цель может быть большой, но не решение.

В reclamador.es мы вкладываем много человеческих усилий в проверку и анализ документов, большинство из которых являются юридическими. Когда мы сталкиваемся с идеей начать автоматизацию, нам в голову приходит множество сложных технологий: IA, машинное обучение, NPL,…

Самый простой, но не бесполезный

Мы любим создавать прототипы и MVP для тестирования нашего продукта как можно быстрее, поэтому мы сводим проблему к самому простому, но не бесполезному варианту использования: «Автоматическая проверка документов, удостоверяющих личность». Большинство наших обширных юридических услуг требует документов такого типа, и отсутствие человеческого контекста в их содержании упрощает анализ.

Идентификационный документ - это просто структура данных, организованная в виде изображения. Первая идея - просто поискать несколько ключевых слов, чтобы определить тип документа. Более того, идентификационные карты имеют некоторую машиночитаемую часть на обратной стороне для получения всей информации. Если мы сможем просто извлечь эти данные с помощью регулярных выражений, этого будет достаточно для подтверждения действительности документа.

Процессоры OCR не идеальны

Обычно обнаруживаются незначительные отличия между OCR-содержимым и оригиналом. Регулярное выражение не всегда может быть решением в 100% случаев. Нам нужна некоторая степень уверенности, какой бы инструмент ни был, Нечеткий поиск. Стандартная библиотека Python поставляется с difflib и некоторыми полезными функциями для сравнения схожести двух строк.

from difflib import SequenceMatcher
SequenceMatcher(a=keyword, b=line).ratio() >= min_ratio

Постройте это абстрактно

Начать с самого простого случая не значит забыть будущее вашего кода. Попробуйте построить абстрактное, свое будущее вам будет благодарно.

Мы определяем класс парсера (вначале анализатор звучит слишком претенциозно :)), настроенный со списком классов поиска, которые могут быть построены с помощью регулярных выражений или нечеткого поиска. У нас есть реализация для испанских документов Id, которая может проверять:

  • Это не испанское удостоверение личности
  • Срок действия не истек
  • Он принадлежит человеку
  • Это передний / задний

Вы можете проверить код в этом репо или в без библиотечных зависимостей, по крайней мере, на данный момент :)