В IxorThink мы разрабатываем алгоритмы обработки документов, специализирующиеся на счетах и ​​квитанциях. Мы автоматически извлекаем ключевую информацию из документов, такую ​​как поставщик и общая стоимость. Первым шагом этого процесса является распознавание и извлечение текста из документов с помощью оптического распознавания символов (OCR). Улучшение качества извлеченного текста важно для улучшения всего конвейера обработки документов. Имея в виду этот вариант использования, в этом блоге мы сравниваем два механизма OCR: Tesseract и Google Vision API.

Тессеракт OCR

Tesseract — самый известный движок OCR с открытым исходным кодом. Первоначально разработанная Hewlett-Packard, сейчас ее спонсирует Google. Активное сообщество постоянно работает над его улучшением, и регулярно выходят новые обновления. Поскольку у него открытый исходный код и, следовательно, он работает локально, единственная стоимость использования Tesseract — это ресурсы, которые использует машина, и нет необходимости передавать документ и результаты через Интернет. LSTM, используемый в модели, также можно обучить дополнительным языкам или шрифтам.

Tesseract может быть запущен из интерфейса командной строки, а также имеет C++ API. Существует множество оболочек, которые позволяют использовать API и в других языках программирования, например, в Python. В этом сравнении мы будем использовать интерфейс командной строки.

Оптическое распознавание символов Google Vision

API Google Vision является частью Google Cloud и включает в себя множество интересных сервисов, а также возможность обнаружения текста. В отличие от Tesseract, стоимость обслуживания составляет 1,50 доллара США за 1000 единиц для первых 5 миллионов документов в месяц. Для документов, превышающих эти 5 миллионов в месяц, цена снижается до 0,60 доллара США за 1000 единиц. Можно использовать службу в качестве API, предоставляя изображение или PDF-файл, закодированный как строка base64, или хранить файл в облачном хранилище Google и предоставлять информацию о корзине.

Существует две функции аннотаций: TEXT_DETECTION предназначена для извлечения текста из любого изображения, а DOCUMENT_TEXT_DETECTION оптимизирована для плотного текста и документов. Мы обнаружили, что, хотя DOCUMENT_TEXT_DETECTION немного лучше фиксирует чистые текстовые строки и столбцы в документе, он также разбивает слова на основе знаков препинания, таких как . , - и : . В нашем случае имеется структурированная информация, такая как номера счетов-фактур и номера НДС, которые часто содержат знаки препинания, но которые мы предпочитаем определять как одно слово. Вот почему мы используем функцию TEXT_DETECTION, так как она не имеет проблемы с чрезмерным разделением.

Эксперименты

Методология
Чтобы сравнить два механизма OCR, нам сначала нужно создать тестовый набор счетов. Некоторые сложные случаи, добавленные в тестовый набор: перекошенные отсканированные документы, документы с очень мелким текстом… В каждом документе мы сначала сравниваем все найденные ограничивающие рамки на уровне слов, чтобы найти совпадения. При перекрытии не менее 50 % мы считаем, что два ограничивающих прямоугольника соответствуют одному и тому же слову. Для совпадающих ограничивающих рамок мы вычисляем расстояние Хэмминга между распознанными словами. Помимо качества, мы также оцениваем время, необходимое для каждого двигателя.

Результаты
Одним из явных результатов является то, что Tesseract быстрее, чем Google Vision, в среднем на 0,689 секунды. Однако сильно ли различаются распознаваемые слова? На рисунке ниже показана гистограмма расстояний Хэмминга между совпадающими словами, где категории «-1» и «-2» представляют собой несопоставленные слова, найденные соответственно Tesseract и Google Vision. Мы видим, что около 60% слов распознаются одинаково. Еще 11% имеют небольшие отличия в одном-двух символах в слове. Однако целых 18% распознанных слов находят только Google и не сопоставляются со словами, найденными Tesseract.

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

Заключение

Tesseract OCR имеет много преимуществ, таких как низкая стоимость и высокая скорость. Дополнительными преимуществами являются полный контроль над моделью и возможность дальнейшего обучения или точной настройки. Тем не менее, качество распознавания текста Google Vision все же лучше, особенно в сложных случаях, таких как очень мелкий текст. Поскольку для нас важнее всего качество, Google Vision OCR выигрывает сравнение в нашем случае использования.

В IxorThink, практике машинного обучения Ixor, мы постоянно пытаемся улучшить наши методы для создания самых современных решений. Как компания-разработчик программного обеспечения, мы можем предоставлять стабильные продукты от проверки концепции до развертывания. Свяжитесь с нами для получения дополнительной информации.