Как извлечь форматированный текст из изображений
Google запустил API некоторое время назад для задач, связанных со зрением, его API извлечения текста работал очень хорошо, но у него есть некоторые ограничения для извлечения форматированного текста, такого как таблицы, в этом посте я немного объясню, почему я разработал простую программу постобработки, чтобы решить эту проблему, позволяющую форматированный текст, подобный тому, который вы могли найти на изображениях электронных таблиц и документов. В последнем разделе я объясню, как его использовать.
Код можно найти здесь.
Google OCR предоставляет текстовый вывод, который может не иметь ожидаемого формата, в этом случае он также предоставляет вывод JSON с информацией о позиции каждого распознанного объекта. Проблема в том, что эти данные не очень хорошо структурированы для некоторых задач, извлечение токенов (последовательности символов без пробелов между собой) не так просто с этим JSON, поскольку он не предоставляет эту информацию прямым способом. Вот почему я создал небольшую программу, чтобы обеспечить способ постобработки этих данных во что-то более управляемое, поэтому она больше подходит для задач обработки текста, таких как форматирование текста, извлечение полных строк текста или фильтрация слов.
Для этого в src/image2tokens.py предоставляется код постобработки. Это применяется для извлечения токенов, а затем еще более абстрактных понятий, таких как текстовые строки или столбцы таблицы.
Требования
- питон 3
- библиотеки Python (попробуйте что-то вроде:
pip install google-cloud-vision
)- google.cloud.vision
- google.protobuf
- google.oauth2
Как это запустить
В папке src есть пример использования по адресу table_example.py
где токенизация используется для анализа изображения таблицы.
python src/table_example.py sample.png
Пример использования
Вход
Выход
HR Information Contact
Position Salary Office Extn.
Accountant $162,700 Tokyo 5407
Chief Executive Officer (CEO) $1,200,000 London 5797
Junior Technical Author $86,000 San Francisco 1562
Software Engineer $132,000 London 2558
Software Engineer $206,850 San Francisco 1314
Integration Specialist $372,000 New York 4804
Software Engineer $163,500 London 6222
Pre-Sales Support $106,450 New York 8330
Sales Assistant $145,600 New York 3990
Senior Javascript Developer $433,060 Edinburgh 6224