Извлечение табличных данных. PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Извлечь табличные данные

Хочу извлечь табличные данные из счетов-фактур, квитанций или любого другого типа документа? Проверить Нанонеты' Оптическое распознавание символов на основе ИИ для извлечения табличные данные.


Введение

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

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

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

Разложение проблемы

Задачу извлечения табличных данных можно разделить на две подзадачи: 1) извлечение таблиц из сканов/изображений/документов PDF, формат которых не распознается машинами, и 2) понимание/интерпретация слов внутри ячеек таблицы, чтобы их можно было правильно импортированы в файлы CSV для электронных таблиц.

Варианты использования извлечения табличных данных

Извлечение табличных данных — варианты использования
Извлечение табличных данных — варианты использования

Отслеживание движения денежных средств в бизнесе

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

Год за годом требуется огромное количество ресурсов, чтобы нанять сотрудников для выполнения этих, казалось бы, простых, но подверженных ошибкам задач. Автоматизированный метод сканирования и извлечения табличных данных значительно поможет этим компаниям сэкономить деньги, время и ресурсы. Кроме того, хорошо документированная электронная таблица также может значительно упростить постобработку для анализа данных. Компании могут легко составлять бюджетные и финансовые прогнозы с помощью алгоритмов машинного обучения, просто извлекая данные из нескольких организованных листов Excel.

Перенос между бизнес-записями

Извлечение табличных данных — пример использования
Извлечение табличных данных — пример использования

При переезде в новое место, страну или при выборе других услуг клиенты должны передавать идентичные данные из предыдущих систем новому поставщику услуг. Такие данные могут включать, помимо прочего, медицинские данные, банковские выписки и т. д.

Внедряя системы для понимания и преобразования данных из одной службы в другую, компании могут значительно сократить расходы.


Хочу извлечь табличные данные из счетов-фактур, квитанций или любого другого типа документа? Проверить Нанонеты' Оптическое распознавание символов на основе ИИ для извлечения табличные данные.


Бухгалтерские фирмы

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

Как это работает?

Извлечение табличных данных для бухгалтерского учета
Извлечение табличных данных для бухгалтерского учета

Хотя почти все знают, что машинное обучение может помочь в автоматизации, немногие на самом деле знают концепции, лежащие в его основе.

На самом деле, то, что мы используем в этом случае, — это концепция, называемая глубоким обучением, которая является подветвью машинного обучения: общей ветвью понимания/изучения промежуточной системы/функции между набором входных и выходных данных, так что мы можем используйте функцию, чтобы делать прогнозы на будущее. Короче говоря, глубокое обучение имитирует функцию с помощью мощного инструмента, называемого нейронными сетями, который имитирует биологические нейронные сети. Мы изучаем правильные веса и нейроны, сводя к минимуму разницу между нашим прогнозом и реальной истиной.

Существует множество вариантов построения этой сети. Ниже мы опишем необходимые варианты, необходимые для извлечения табличных данных.

CNN

Сверточные нейронные сети (CNN) состоят из нейронов с обучаемыми весами и смещениями, очень похожими на нейронные сети. Основное отличие состоит в том, что мы предполагаем, что входными данными являются изображения для CNN, что позволяет нам встраивать определенные атрибуты в архитектуру, называемую ядрами, которая представляет собой скользящее окно, объединяющее соседние функции вместе в виде взвешенной суммы для передачи на следующий уровень. В результате форвардная функция реализуется более эффективно и существенно улучшается. CNN пригодятся, когда мы хотим найти определенные объекты внутри изображения, в данном случае таблицы.

РНН

С другой стороны, рекуррентные нейронные сети (RNN) представляют собой класс сетей, которые позволяют использовать предыдущие выходные данные в качестве входных данных для следующего прогноза. Это особенно полезно, когда прогноз зависит от результатов предыдущего времени (например, в прогнозе погоды вопрос о том, будет ли сегодня дождь, сильно зависит от того, шел ли дождь накануне). Этот тип архитектуры полезен при попытке понять значение предложения, где предыдущие слова могут влиять на то, что может быть/означать текущее слово.

Объединяем концепции

Обучаясь на соответствующих наборах данных, теперь мы можем извлекать табличные данные с помощью следующей процедуры:

  1. Использование CNN для классификации типа документа в пределах одного изображения. Это позволяет нам быть более конкретными при выборе разных обученных детекторов таблиц, которые потенциально могут работать лучше в разных сценариях (например, один для счета-фактуры и один для банковских выписок).
  2. Использование CNN для дальнейшего обнаружения таблиц, строк и столбцов.
  3. Объединение CNN и RNN для оптического распознавания символов, что позволяет нам понять, что именно хранится в каждой таблице, строке или столбце. Понимание «языка» может позволить нам помещать наши извлеченные данные в определенные форматы (например, CSV или JSON), где мы можем в дальнейшем использовать их для статистического анализа и перекрестных сравнений.

Хочу извлечь табличные данные из счетов-фактур, квитанций или любого другого типа документа? Проверить Нанонеты' Оптическое распознавание символов на основе ИИ для извлечения табличные данные.


учебник

Преобразование PDF в изображения

Извлечение табличных данных с помощью компьютерного зрения в конечном итоге означает, что данные должны быть предварительно обработаны в форматы изображений, если это еще не сделано. Наиболее распространенным типом документа, который необходимо преобразовать, является PDF, поэтому нашим первым шагом будет преобразование файлов PDF в файлы изображений для дальнейшей обработки. Для этого нам потребуется библиотека pdf2image, которую можно сохранить следующим образом.

pip install pdf2image

После этого мы можем написать следующее для предварительной обработки файлов PDF.

from pdf2image import convert_from_path, convert_from_bytes
from pdf2image.exceptions import ( PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError
) images = convert_from_path('example.pdf')
images = convert_from_bytes(open('example.pdf','rb').read())

Представленный код обеспечивает как из байтов, так и из пути. Выберите тот, который подходит для ваших нужд.

Поиск таблиц

Чтобы найти таблицы на изображении, наивным способом будет обнаружение линий и границ, которые выглядят как таблица. Проще всего будет использовать традиционные методы компьютерного зрения через OpenCV (много туториалов можно найти здесь на их Официальном сайте). Чтобы использовать его, просто установите его с помощью:

pip install opencv-python

Однако, если ваша компания располагает большим объемом данных о том, как выглядят типичные таблицы в вашей базе данных файлов, вы также можете использовать методы обнаружения объектов для поиска таблиц. Некоторые известные методы включают Faster RCNN и YOLO. Однако обратите внимание, что при обучении собственной модели для этого вам потребуются вычислительные ресурсы, такие как графические процессоры, во время обучения, а также значительный объем данных, начиная от всех видов сценариев, в которых захвачено изображение/отсканированный PDF-файл.

Извлечение контента через Google Vision API

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

Весь API Google Vision легко настроить; можно обратиться к его официальному руководству по https://cloud.google.com/vision/docs/quickstart-client-libraries для подробной процедуры настройки.

Ниже приведен код для получения OCR:

def detect_document(path): """Detects document features in an image.""" from google.cloud import vision import io client = vision.ImageAnnotatorClient() with io.open(path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) for page in response.full_text_annotation.pages: for block in page.blocks: print('nBlock confidence: {}n'.format(block.confidence)) for paragraph in block.paragraphs: print('Paragraph confidence: {}'.format( paragraph.confidence)) for word in paragraph.words: word_text = ''.join([ symbol.text for symbol in word.symbols ]) print('Word text: {} (confidence: {})'.format( word_text, word.confidence)) for symbol in word.symbols: print('tSymbol: {} (confidence: {})'.format( symbol.text, symbol.confidence)) if response.error.message: raise Exception( '{}nFor more info on error messages, check: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message))

Если вы используете удаленные изображения из облаков Google, вместо этого вы можете использовать следующий код:

def detect_text_uri(uri): """Detects text in the file located in Google Cloud Storage or on the Web. """    from google.cloud import vision client = vision.ImageAnnotatorClient() image = vision.Image() image.source.image_uri = uri response = client.text_detection(image=image) texts = response.text_annotations    print('Texts:') for text in texts: print('n"{}"'.format(text.description)) vertices = (['({},{})'.format(vertex.x, vertex.y)                  for vertex in text.bounding_poly.vertices])        print('bounds: {}'.format(','.join(vertices))) if response.error.message: raise Exception( '{}nFor more info on error messages, check: '            'https://cloud.google.com/apis/design/errors'.format(                response.error.message))

API Google очень гибок в том смысле, что их модель машинного обучения очень сильна и устойчива ко многим сложным сценариям. Имейте в виду, что функция document_text_detection специально обучена и специализируется на очень сжатых текстах, которые появляются в основном в PDF-файлах. Хотя это удовлетворяет потребности многих, но если в вашем PDF-файле несколько более скудные слова, может быть лучше использовать их другую функцию обнаружения текста, которая больше фокусируется на изображениях в дикой природе.

Дополнительные коды, касающиеся использования Google API, можно получить здесь: https://cloud.google.com/vision; вы также можете ссылаться на коды на других языках (например, Java или Go), если вы с ними более знакомы.

Существуют также другие сервисы / API OCR от Amazon и Microsoft, и вы всегда можете использовать ПиТессеракт библиотека для обучения вашей модели для конкретных целей.


Хочу извлечь табличные данные из счетов-фактур, квитанций или любого другого типа документа? Проверить Нанонеты' Оптическое распознавание символов на основе ИИ для извлечения табличные данные.


Не разбираетесь в кодировании? Попробуйте Нанонет!

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

Шаг 1.

Зайдите на nanonets.com и зарегистрируйтесь / авторизуйтесь.

Извлечение табличных данных. PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Извлечение табличных данных — наносети

Шаг 2.

После регистрации перейдите в область «Выберите, чтобы начать», где созданы все предварительно созданные экстракторы, и щелкните вкладку «Таблицы» для экстрактора, предназначенного для извлечения табличных данных.

Шаг 3.

Извлечение табличных данных. PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Через несколько секунд появится страница извлечения данных с сообщением, что она готова. Загрузите файл для извлечения.

Извлечение табличных данных. PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Шаг 4.

После обработки Nanonets точно извлекает всю табличную информацию, пропуская даже пустые места! Данные также можно поместить в JSON для загрузки и дальнейших вычислений.

Извлечение табличных данных. PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Заключение

И вот оно! Краткая история развития методов извлечения табличных данных и того, как легко внедрить их в свой бизнес. Надеюсь, это сэкономит вам много труда, который ранее требовался для ввода и двойной проверки данных.

Отметка времени:

Больше от ИИ и машинное обучение