Хотите извлечь данные из отсканированных документов? Пытаться Нанонеты™ продвинутый OCR-сканер на основе ИИ извлекать и систематизировать информацию из отсканированные документы автоматически.
Введение
Поскольку мир для удобства перешел от бумаги и рукописного текста к цифровым документам, важность преобразования изображений и отсканированных документов в значимые данные резко возросла.
Чтобы не отставать от потребности в высокоточном извлечении данных из документов, многочисленные исследовательские центры и корпорации (например, Google, AWS, Nanonets и т. д.) сосредоточились на технологиях в области компьютерного зрения и обработки естественного языка (NLP).
Расцвет технологий глубокого обучения обеспечил гигантский скачок в том, какие данные можно извлечь; мы больше не ограничены только извлечением текста, но и других структур данных, таких как таблицы и пары ключ-значение. В настоящее время многие решения предлагают различные продукты для удовлетворения потребностей частных лиц и владельцев бизнеса в извлечении данных из документов.
В этой статье рассматриваются современные технологии, используемые для извлечения данных из отсканированных документов, после чего следует краткое практическое руководство по Python. Мы также рассмотрим некоторые из популярных в настоящее время на рынке решений, обеспечивающих наилучшие предложения в этой области.
Что такое извлечение данных?
Извлечение данных — это процесс преобразования неструктурированных данных в интерпретируемую информацию с помощью программ, чтобы обеспечить дальнейшую обработку данных людьми. Здесь мы перечисляем несколько наиболее распространенных типов данных, которые можно извлечь из отсканированных документов.
Текстовые данные
Наиболее распространенной и самой важной задачей при извлечении данных из отсканированных документов является извлечение текста. Этот процесс, кажущийся простым, на самом деле очень сложен, поскольку отсканированные документы часто представляются в формате изображений. Кроме того, методы извлечения сильно зависят от типов текста. Хотя в большинстве случаев текст присутствует в плотных печатных форматах, не менее важна возможность извлечения разреженного текста из менее тщательно отсканированных документов или из рукописных писем с резко отличающимся стилем. Такой процесс позволит программам преобразовывать изображения в машинно-кодированный текст, где мы можем дополнительно организовать их из неструктурированных данных (без определенного форматирования) в структурированные данные для дальнейшего анализа.
таблицы
Табличные формы являются наиболее популярным подходом к хранению данных, так как формат легко интерпретируется человеческим глазом. Процесс извлечения таблиц из отсканированных документов требует технологии, выходящей за рамки распознавания символов — необходимо обнаруживать линии и другие визуальные особенности, чтобы выполнить правильное извлечение таблицы и преобразовать эту информацию в структурированные данные для дальнейших вычислений. Методы компьютерного зрения (подробно описанные в следующих разделах) широко используются для достижения высокой точности извлечения таблиц.
Пары ключ-значение
Альтернативным форматом, который мы часто используем в документах для хранения данных, являются пары ключ-значение (KVP).
KVP — это, по сути, два элемента данных — ключ и значение — связанные вместе как одно целое. Ключ используется как уникальный идентификатор извлекаемого значения. Классическим примером KVP является словарь, где словари являются ключами, а соответствующие определения — значениями. Эти пары, обычно незамеченные, на самом деле очень часто используются в документах: такие вопросы в опросах, как имя, возраст и цены на товары в счетах-фактурах, — все они неявно являются KVP.
Однако, в отличие от таблиц, KVP часто существуют в неизвестных форматах и иногда даже частично написаны от руки. Например, ключи могут быть предварительно напечатаны в коробках, а значения вписаны от руки при заполнении формы. Таким образом, поиск базовых структур для автоматического извлечения KVP является постоянным исследовательским процессом даже для самых передовых объектов и лабораторий.
цифры
Наконец, также очень важно извлечь или захватывать данные из рисунков в отсканированном документе. Статистические индикаторы, такие как круговые диаграммы и гистограммы, часто содержат важную информацию для документов. Хороший процесс извлечения данных должен быть в состоянии делать выводы из легенд и чисел, чтобы частично извлекать данные из рисунков для дальнейшего использования.
Хотите извлечь данные из отсканированных документов? Дайте Нанонет™ спин для более высокой точности, большей гибкости, постобработки и широкого набора интеграций!
Технологии извлечения данных
Извлечение данных вращается вокруг двух основных процессов: Оптическое распознавание символов. (OCR), затем следует обработка естественного языка (НЛП).
Извлечение OCR — это процесс преобразования текстовых изображений в машинно закодированный текст, а последний — это анализ слов для вывода значений. OCR часто сопровождается другими методами компьютерного зрения, такими как обнаружение прямоугольников и строк, для извлечения вышеупомянутых типов данных, таких как таблицы и KVP, для более полного извлечения.
Основные улучшения, лежащие в основе конвейера извлечения данных, тесно связаны с достижениями в области глубокого обучения, которые внесли большой вклад в области компьютерного зрения и обработки естественного языка (NLP).
Что такое глубокое обучение?
Глубокое обучение играет важную роль в ажиотаже эпохи искусственного интеллекта и постоянно выдвигается на первый план во многих приложениях. В традиционной инженерии наша цель состоит в том, чтобы спроектировать систему/функцию, которая генерирует выходные данные из заданных входных данных; глубокое обучение, с другой стороны, полагается на входные и выходные данные, чтобы найти промежуточные отношения, которые могут быть расширены на новые невидимые данные с помощью так называемого нейронной сети.
Нейронная сеть или многослойный персептрон (МЛП), представляет собой архитектуру машинного обучения, вдохновленную тем, как обучается человеческий мозг. Сеть содержит нейроны, которые имитируют биологические нейроны и «активируются» при получении другой информации. Наборы нейронов образуют слои, и несколько слоев складываются вместе, чтобы сформировать сеть, которая служит целям прогнозирования нескольких форм (т. е. классификации изображений или ограничивающих рамок для обнаружения объектов).
В области компьютерного зрения активно применяется разновидность нейронных сетей — сверточные нейронные сети. (CNN). Вместо традиционных слоев CNN использует сверточные ядра, которые скользят по тензорам (или многомерным векторам) для извлечения признаков. В конце концов, в сочетании с традиционными сетевыми уровнями, CNN очень успешно справляются с задачами, связанными с изображениями, и в дальнейшем сформировали основу для извлечения OCR и обнаружения других функций.
С другой стороны, НЛП зависит от другого набора сетей, который фокусируется на данных временных рядов. В отличие от изображений, где одно изображение не зависит друг от друга, прогнозирование текста может быть значительно улучшено, если также учитывать слова, предшествующие или следующие за ним. В последние несколько лет семейство сетей, а именно долговременные воспоминания (LSTM), который принимает предыдущие результаты в качестве входных данных для прогнозирования текущих результатов. Двусторонние LSTM также часто применялись для улучшения результатов прогнозирования, когда учитывались как результаты до, так и после. Однако в последние годы концепция преобразователей, использующих механизм внимания, начинает развиваться из-за ее более высокой гибкости, что приводит к лучшим результатам, чем традиционные сети, обрабатывающие последовательные временные ряды.
Приложения извлечения данных
Основной целью извлечения данных является преобразование данных из неструктурированных документов в структурированные форматы, в которых высокоточный поиск текста, рисунков и структур данных может быть очень полезен для числового и контекстуального анализа. Эти анализы могут быть очень полезны, особенно для бизнеса:
Бизнес
Бизнес-корпорации и крупные организации ежедневно имеют дело с тысячами документов в одинаковых форматах — крупные банки получают множество одинаковых приложений, а исследовательским группам приходится анализировать горы форм для проведения статистического анализа. Таким образом, автоматизация начального этапа извлечения данных из документов значительно снижает избыточность человеческих ресурсов и позволяет работникам сосредоточиться на анализе данных и проверке приложений, а не на вводе информации.
- Проверка приложений — Компании получают тонны заявок, написанных от руки или только через анкеты. В большинстве случаев эти приложения могут сопровождаться личными идентификаторами для целей проверки. Отсканированные документы, удостоверяющие личность, такие как паспорта или карты, обычно поставляются партиями в одинаковых форматах. Таким образом, хорошо написанный инструмент для извлечения данных может быстро преобразовывать данные (тексты, таблицы, рисунки, KVP) в машиночитаемые тексты, что может существенно сократить трудозатраты на выполнение этих задач и сосредоточиться на выборе приложений, а не на их извлечении.
- Согласование платежей — Сверка платежей — это процесс сравнения банковских выписок для обеспечения совпадения цифр между счетами, который в значительной степени связан с извлечением данных из документов — сложная задача для компании со значительным размером и различными источниками дохода. Извлечение данных может упростить этот процесс и позволить сотрудникам сосредоточиться на ошибочных данных и изучить потенциальные мошеннические действия, связанные с денежным потоком.
- Статистический анализ — Отзывы клиентов или участников экспериментов используются корпорациями и организациями для улучшения своих продуктов и услуг, и для всесторонней оценки отзывов обычно требуется статистический анализ. Однако данные опроса могут существовать в различных форматах или быть скрыты между текстом в различных форматах. Извлечение данных может облегчить процесс, указав очевидные данные из документов в пакетах, упростить процесс поиска полезных процессов и, в конечном счете, повысить эффективность.
- Делимся прошлыми записями — От здравоохранения до переключения банковских услуг крупным отраслям часто требуется новая информация о клиентах, которая, возможно, уже существовала где-то еще. Например, пациент, меняющий больницу из-за переезда, может иметь ранее существовавшие медицинские записи, которые могут быть полезны для новой больницы. В таких случаях пригодится хорошее программное обеспечение для извлечения данных, поскольку все, что требуется, — это принести отсканированную историю записей в новую больницу, чтобы они автоматически заполнили всю информацию. Это было бы не только удобно, но и позволило бы избежать серьезных рисков, особенно в сфере здравоохранения, когда важные записи о пациентах были бы упущены из виду.
Хотите извлечь данные из отсканированных документов? Дайте Нанонет™ спин для более высокой точности, большей гибкости, постобработки и широкого набора интеграций!
Руководства
Чтобы обеспечить более четкое представление о том, как выполнять извлечение данных, мы показываем два набора методов извлечения данных из сканированных документов.
Здание с нуля
Можно создать простой механизм OCR для извлечения данных с помощью механизма PyTesseract следующим образом:
try: from PIL import Image
except ImportError: import Image
import pytesseract # If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:Program Files (x86)Tesseract-OCRtesseract' # Simple image to string
print(pytesseract.image_to_string(Image.open('test.png'))) # List of available languages
print(pytesseract.get_languages(config='')) # French text image to string
print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra')) # In order to bypass the image conversions of pytesseract, just use relative or absolute image path
# NOTE: In this case you should provide tesseract supported images or tesseract will return error
print(pytesseract.image_to_string('test.png')) # Batch processing with a single file containing the list of multiple image file paths
print(pytesseract.image_to_string('images.txt')) # Timeout/terminate the tesseract job after a period of time
try: print(pytesseract.image_to_string('test.jpg', timeout=2)) # Timeout after 2 seconds print(pytesseract.image_to_string('test.jpg', timeout=0.5)) # Timeout after half a second
except RuntimeError as timeout_error: # Tesseract processing is terminated pass # Get bounding box estimates
print(pytesseract.image_to_boxes(Image.open('test.png'))) # Get verbose data including boxes, confidences, line and page numbers
print(pytesseract.image_to_data(Image.open('test.png'))) # Get information about orientation and script detection
print(pytesseract.image_to_osd(Image.open('test.png'))) # Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
with open('test.pdf', 'w+b') as f: f.write(pdf) # pdf type is bytes by default # Get HOCR output
hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr') # Get ALTO XML output
xml = pytesseract.image_to_alto_xml('test.png')
Для получения дополнительной информации о коде вы можете проверить их официальный документация.
Проще говоря, код извлекает данные, такие как текст и ограничивающие рамки, из заданного изображения. Несмотря на то, что движок довольно полезен, он далеко не так силен, как те, которые предоставляются передовыми решениями, из-за их значительной вычислительной мощности для обучения.
Использование API документов Google
def async_detect_document(gcs_source_uri, gcs_destination_uri):
"""OCR with PDF/TIFF as source files on GCS""" import json import re from google.cloud import vision from google.cloud import storage # Supported mime_types are: 'application/pdf' and 'image/tiff' mime_type = 'application/pdf' # How many pages should be grouped into each json output file. batch_size = 2 client = vision.ImageAnnotatorClient() feature = vision.Feature( type_=vision.Feature.Type.DOCUMENT_TEXT_DETECTION) gcs_source = vision.GcsSource(uri=gcs_source_uri) input_config = vision.InputConfig( gcs_source=gcs_source, mime_type=mime_type) gcs_destination = vision.GcsDestination(uri=gcs_destination_uri) output_config = vision.OutputConfig( gcs_destination=gcs_destination, batch_size=batch_size) async_request = vision.AsyncAnnotateFileRequest( features=[feature], input_config=input_config, output_config=output_config) operation = client.async_batch_annotate_files( requests=[async_request]) print('Waiting for the operation to finish.') operation.result(timeout=420) # Once the request has completed and the output has been # written to GCS, we can list all the output files. storage_client = storage.Client() match = re.match(r'gs://([^/]+)/(.+)', gcs_destination_uri) bucket_name = match.group(1) prefix = match.group(2) bucket = storage_client.get_bucket(bucket_name) # List objects with the given prefix. blob_list = list(bucket.list_blobs(prefix=prefix)) print('Output files:') for blob in blob_list: print(blob.name) # Process the first output file from GCS. # Since we specified batch_size=2, the first response contains # the first two pages of the input file. output = blob_list[0] json_string = output.download_as_string() response = json.loads(json_string) # The actual response for the first page of the input file. first_page_response = response['responses'][0] annotation = first_page_response['fullTextAnnotation'] # Here we print the full text from the first page. # The response contains more information: # annotation/pages/blocks/paragraphs/words/symbols # including confidence scores and bounding boxes print('Full text:n') print(annotation['text'])
В конечном счете, искусственный интеллект Google для документов позволяет извлекать из документов большое количество информации с высокой точностью. Кроме того, услуга предлагается и для определенных целей, включая извлечение текста как для обычных изображений, так и для изображений в дикой природе.
Пожалуйста, обратитесь к здесь больше.
Текущие решения, предлагающие извлечение данных
Помимо крупных корпораций с API для извлечения данных из документов, существует несколько решений, обеспечивающих высокую точность. Распознавание PDF-файлов Сервисы. Мы представляем несколько вариантов оптического распознавания символов PDF, которые специализируются на различных аспектах, а также некоторые недавние исследовательские прототипы, которые, кажется, дают многообещающие результаты*:
* Боковое примечание: существует несколько сервисов OCR, которые нацелены на такие задачи, как изображения в дикой природе. Мы пропустили эти услуги, так как в настоящее время сосредоточены только на чтении PDF-документов.
- API Google — Являясь одним из крупнейших поставщиков онлайн-услуг, Google предлагает потрясающие результаты извлечения документов с помощью своей новаторской технологии компьютерного зрения. Можно использовать их услуги бесплатно, если использование довольно низкое, но цена увеличивается по мере увеличения вызовов API.
- Глубокий читатель — Deep Reader — это исследовательская работа, опубликованная на конференции ACCV 2019. Она включает несколько современных сетевых архитектур для выполнения таких задач, как сопоставление документов, поиск текста и шумоподавление изображений. Существуют дополнительные функции, такие как таблицы и извлечение пар ключ-значение, которые позволяют извлекать и сохранять данные организованным образом.
- Нанонеты ™ — Благодаря высококвалифицированной команде глубокого обучения Nanonets™ PDF OCR полностью не зависит от шаблонов и правил. Таким образом, Nanonets™ может работать не только с определенными типами PDF-файлов, но также может применяться к любому типу документов для поиска текста.
Хотите извлечь данные из отсканированных документов? Дайте Нанонет™ спин для более высокой точности, большей гибкости, постобработки и широкого набора интеграций!
Заключение
В заключение в этой статье представлено подробное объяснение извлечения данных из отсканированных документов, включая проблемы, стоящие за этим, и технологии, необходимые для этого процесса.
Представлены два учебника по разным методам, а также для справки представлены текущие решения, которые предлагают его из коробки.
- 2019
- О нас
- Absolute
- Учетная запись
- точный
- Достигать
- дополнение
- дополнительный
- продвинутый
- авансы
- AI
- алгоритмы
- Все
- уже
- альтернатива
- анализировать
- анализ
- Другой
- API
- API
- Применение
- Приложения
- подхода
- архитектура
- около
- гайд
- искусственный
- искусственный интеллект
- внимание
- автоматизация
- доступен
- AWS
- фон
- Банка
- Банки
- основа
- не являетесь
- ЛУЧШЕЕ
- Beyond
- Крупнейшая
- граница
- Коробка
- строить
- бизнес
- бизнес
- Карты
- случаев
- Наличный расчёт
- денежный поток
- определенный
- проблемы
- сложные
- Графики
- Оформить заказ
- классический
- облако
- CNN
- код
- как
- Общий
- Компании
- Компания
- полностью
- комплектующие
- комплексный
- вычисление
- компьютер
- сама концепция
- Конференция
- доверие
- подключенный
- постоянно
- содержит
- способствовало
- удобство
- Удобно
- конверсий
- Основные
- Корпорации
- соответствующий
- может
- решающее значение
- Текущий
- В настоящее время
- клиент
- Клиенты
- данным
- обработка данных
- хранение данных
- сделка
- описано
- Проект
- подробность
- обнаружение
- различный
- трудный
- Интернет
- Документация
- легко
- затрат
- сотрудников
- Двигатель
- Проект и
- особенно
- по существу
- Оценки
- и т.д
- оценка
- События
- пример
- Кроме
- эксперимент
- Больше
- обширный
- Экстракты
- семья
- Особенность
- Особенности
- Обратная связь
- Поля
- обнаружение
- First
- Трансформируемость
- поток
- Фокус
- внимание
- фокусируется
- фокусировка
- после
- Передний край
- форма
- формат
- формы
- Бесплатно
- Французский
- Выполнять
- полный
- далее
- цель
- хорошо
- большой
- значительно
- Управляемость
- практический
- здравоохранение
- медицинской отрасли
- полезный
- здесь
- High
- высший
- очень
- история
- больницы
- Как
- How To
- Однако
- HTTPS
- человек
- Набор персонала
- Людей
- изображение
- значение
- важную
- улучшать
- включают
- В том числе
- доход
- Увеличение
- individual
- лиц
- промышленности
- промышленность
- информация
- вход
- вдохновленный
- Интеллекта
- вопрос
- IT
- работа
- Основные
- ключи
- Labs
- язык
- Языки
- большой
- ведущий
- УЧИТЬСЯ
- изучение
- линия
- Список
- Длинное
- машина
- обучение с помощью машины
- основной
- Большинство
- человек
- способ
- рынок
- Совпадение
- согласование
- основным медицинским
- методы
- БОЛЕЕ
- самых
- Самые популярные
- перемещение
- с разными
- а именно
- натуральный
- потребности
- сеть
- сетей
- "обычные"
- номера
- многочисленный
- предлагают
- предложенный
- предлагающий
- Предложения
- Предложения
- Официальный представитель в Грузии
- постоянный
- онлайн
- операция
- Опции
- заказ
- организации
- Организованный
- Другие контрактные услуги
- Владельцы
- новыми участниками
- оплата
- выполнения
- период
- личного
- Новаторская
- Популярное
- потенциал
- мощностью
- предсказывать
- прогноз
- представить
- довольно
- предыдущий
- цена
- процесс
- Процессы
- обработка
- Продукция
- FitPartner™
- Программы
- многообещающий
- обеспечивать
- обеспечение
- целей
- быстро
- RE
- читатель
- Reading
- Получать
- примирение
- учет
- уменьшить
- по
- отношения
- запросить
- требовать
- обязательный
- требуется
- исследованиям
- Полезные ресурсы
- ответ
- Итоги
- возвращают
- рисках,
- сканирование
- секунды
- обслуживание
- Услуги
- набор
- несколько
- Короткое
- краткосрочный
- аналогичный
- просто
- с
- Размер
- Software
- твердый
- Решения
- некоторые
- специализированный
- Вращение
- современное состояние
- отчетность
- статистический
- диск
- поток
- сильный
- структурированный
- существенный
- успешный
- Поддержанный
- Опрос
- целевое
- задачи
- команда
- снижения вреда
- технологии
- Технологии
- тестXNUMX
- мир
- следовательно
- тысячи
- Через
- время
- раз
- вместе
- Тон
- к
- традиционный
- Обучение
- учебные пособия
- Типы
- понимать
- созданного
- использование
- обычно
- ценностное
- различный
- проверка
- Вид
- видение
- будь то
- в то время как
- в
- без
- слова
- Работа
- рабочие
- Мир
- бы
- XML
- лет