Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Обнаружение таблиц и извлечение информации с использованием глубокого обучения


Введение в извлечение таблиц

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

Для продуктивной обработки/доступа к этим огромным данным необходимо разработать ценные инструменты извлечения информации.

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

Извлечение таблицы это задача обнаружения и декомпозиции табличной информации в документе.

Табличное распознавание символов — Nanonets, извлекающее табличные данные из изображения!
Table OCR — наносети извлекают табличные данные из изображения!

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

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

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


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


Содержание

Извлечение таблицы из изображения с помощью OCR таблицы Nanonets

  • Подписаться за бесплатный аккаунт Nanonets

    • Загрузка изображений/файлов в модель Nanonets Table OCR
    • Nanonets автоматически обнаруживает и извлекает все табличные данные
    • Отредактируйте и просмотрите данные (при необходимости)
    • Экспортируйте обработанные данные в формате Excel, csv или JSON.

Извлечь таблицу из изображения с помощью Nanonets

Хотите, чтобы очистить данные из PDF документы, конвертировать PDF-таблицу в Excel or автоматизировать извлечение таблицы? Узнать как нанонец PDF-скребок or парсер PDF может сделать ваш бизнес более продуктивным.


API распознавания таблиц Nanonets

Распознавание таблиц с помощью Nanonets
Распознавание таблиц с помощью Nanonets

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

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

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

https://nanonets.com/documentation/


Ваш бизнес связан с распознаванием данных или текста в цифровых документах, PDF-файлах или изображениях? Задумывались ли вы, как извлечь табличные данные, извлекать текст из изображений , извлекать данные из PDF or извлечь текст из PDF точно и качественно?


Кому будет полезно извлечение таблиц

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

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Источник: Патрик ТомассоUnsplash

Личные случаи использования

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

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

Документы в HTML: На веб-страницах мы находим множество информации, представленной с использованием таблиц. Они помогают нам в сравнении с данными и дают нам быстрое представление о цифрах в организованном порядке. Используя процесс извлечения таблиц, мы можем сканировать документы PDF или изображения JPG / PNG и загружать информацию непосредственно в собственный формат таблицы, созданный самим собой. Кроме того, мы можем написать сценарии для добавления дополнительных таблиц на основе существующих таблиц и тем самым оцифровывать информацию. Это помогает нам в редактировании контента и ускоряет процесс хранения.


Промышленные случаи использования

Есть несколько отраслей по всему миру, которые активно работают с документами и документацией, особенно в банковском и страховом секторах. Таблицы широко используются, начиная от хранения данных клиентов и заканчивая их потребностями. Эта информация снова передается в виде документа (печатной копии) в различные ветви для утверждений, где иногда неправильное общение может привести к ошибкам при получении информации из таблиц. Вместо этого, использование здесь автоматизации делает нашу жизнь намного проще. После того как исходные данные собраны и утверждены, мы можем напрямую отсканировать эти документы в таблицы и продолжить работу с оцифрованными данными. Не говоря уже об уменьшении затрат времени и сбоев, мы можем уведомить клиентов о времени и месте обработки информации. Это, следовательно, обеспечивает надежность данных и упрощает наш способ выполнения операций. Давайте теперь посмотрим на другие возможные варианты использования:

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

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


Бизнес-кейсы

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

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

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


У вас есть проблемы с OCR? Хотите оцифровать счета-фактуры, PDF-файлы или номерные знаки? Направляйтесь к Нанонеты и создавать модели OCR бесплатно!


Глубокое обучение в действии

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

Нейронная сеть - это структура, которая распознает основные взаимосвязи в данных с помощью процесса, который имитирует работу человеческого мозга. У них есть разные искусственные слои, через которые проходят данные, где они узнают об особенностях. Существуют разные архитектуры, такие как Convolution NN, Recurrent NN, Autoencoders, Generative Adversarial NN для обработки различных типов данных. Они сложны, но показывают высокую производительность для решения проблем в режиме реального времени. Давайте теперь посмотрим на исследование, которое было проведено в области извлечения таблиц с использованием нейронных сетей, а также, давайте кратко рассмотрим их.


Таблетнет

Бумага: TableNet: модель глубокого обучения для сквозного обнаружения таблиц и извлечения табличных данных из изображений отсканированных документов

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

Они предложили решение, которое включает точное обнаружение табличной области в изображении и последующее обнаружение и извлечение информации из строк и столбцов обнаруженной таблицы.

Набор данных: Используемый набор данных был Marmot. Он имеет 2000 страниц в формате PDF, которые были собраны с соответствующими фактами. Сюда также входят китайские страницы. Ссылка - http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

Архитектура: Архитектура основана на модели кодера-декодера Long et al. для семантической сегментации. Та же сеть кодировщика/декодера используется в архитектуре FCN для извлечения таблицы. Изображения предварительно обрабатываются и модифицируются с помощью Tesseract OCR.

Модель создается в два этапа, вводя ее в методы глубокого обучения. На первом этапе они использовали веса предварительно обученной сети VGG-19. Они заменили полностью связанные слои используемой сети VGG сверточными слоями 1 × 1. За всеми сверточными слоями следует активация ReLU и выпадающий слой с вероятностью 0.8. Вторую фазу они называют декодированной сетью, которая состоит из двух ветвей. Это соответствует интуиции, что область столбца является подмножеством области таблицы. Таким образом, единая сеть кодирования может отфильтровывать активные области с большей точностью, используя функции областей таблицы и столбца. Выход из первой сети распределяется между двумя ветвями. В первой ветви применяются две операции свертки, и окончательная карта функций масштабируется до размеров исходного изображения. В другом ответвлении для обнаружения столбцов есть дополнительный сверточный слой с функцией активации ReLU и слой выпадения с той же вероятностью выпадения, что упоминалось ранее. Карты характеристик подвергаются повышающей дискретизации с использованием сверток с дробным шагом после сверточного слоя (1 × 1). Ниже представлено изображение архитектуры:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Архитектура TableNet

Выходы: После обработки документов с использованием модели создаются маски таблиц и столбцов. Эти маски используются для фильтрации таблицы и областей ее столбцов на изображении. Теперь, используя Tesseract OCR, информация извлекается из сегментированных областей. Ниже приведено изображение, показывающее маски, которые были сгенерированы и впоследствии извлечены из таблиц:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Они также предложили ту же модель, которая точно настроена на ICDAR, которая работала лучше, чем оригинальная модель. Recall, Precision и F1-Score для тонко настроенной модели составляют 0.9628, 0.9697, 0.9662 соответственно. Исходная модель имеет записанные метрики 0.9621, 0.9547, 0.9583 в том же порядке. Давайте теперь погрузимся в еще одну архитектуру.


ДипДеСРТ

Бумага: DeepDeSRT: глубокое обучение для обнаружения и распознавания структуры таблиц в изображениях документов

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

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

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

Набор данных: Используемый набор данных представляет собой набор соревнований таблицы ICDAR 2013, содержащий 67 документов общим объемом 238 страниц.

Архитектура:

  • Обнаружение таблицы Предложенная модель использовала Fast RCNN в качестве базовой структуры для обнаружения таблиц. Архитектура разбита на две разные части. В первой части они генерировали предложения по регионам на основе входного изображения так называемой сети предложений по регионам (RPN). Во второй части они классифицировали регионы, используя Fast-RCNN. Чтобы поддержать эту архитектуру, они использовали ZFNet и веса VGG-16.
  • Распознавание структуры После того, как таблица была успешно обнаружена и ее местоположение известно системе, следующей задачей в понимании ее содержимого является распознавание и определение местоположения строк и столбцов, которые составляют физическую структуру таблицы. Следовательно, они использовали полностью подключенную сеть с весами VGG-16, которая извлекает информацию из строк и столбцов. Ниже приведены результаты DeepDeSRT:

Выходы:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Выходы обнаружения таблицы
Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Выходы распознавания структуры [6]

Результаты оценки показывают, что DeepDeSRT превосходит современные методы обнаружения таблиц и распознавания структур и достигает F1-показателей 96.77% и 91.44% для обнаружения таблиц и распознавания структур, соответственно, до 2015 года.


График нейронных сетей

Бумага: Переосмысление распознавания таблиц с использованием графических нейронных сетей

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

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

Набор данных: Авторы предложили новый большой синтетически сгенерированный набор данных из таблиц 0.5 миллиона, разделенных на четыре категории.

  1. Изображения представляют собой простые изображения без слияния и с правящими линиями
  2. Изображения имеют разные типы границ, в том числе случайное отсутствие правящих линий
  3. Представляет объединение ячеек и столбцов
  4. Камера захватывает изображения с линейным преобразованием перспективы

Архитектура: Они использовали мелкую сверточную сеть, которая генерирует соответствующие сверточные признаки. Если пространственные размеры выходных объектов не совпадают с входным изображением, они собирают позиции, которые линейно уменьшаются в зависимости от соотношения между входными и выходными измерениями, и отправляют их в сеть взаимодействия, в которой есть две графовые сети, известные как DGCNN. и GravNet. Параметры графа сети такие же, как у исходного CNN. В конце они использовали выборку пары времени выполнения для классификации извлекаемого контента, который внутренне использовал алгоритм на основе Монте-Карло. Ниже приведены результаты:

Выходы:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Выходы, генерируемые графическими нейронными сетями

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

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

CGAN и генетические алгоритмы

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

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

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

Набор данных: Авторы использовали свой собственный набор данных, который имеет 4000 таблиц.

Архитектура: Предлагаемая модель состоит из двух частей. В первой части входные изображения абстрагируются в скелетные таблицы с использованием условной генеративной состязательной нейронной сети. GAN снова имеет две сети: генератор, который генерирует случайные выборки, и дискриминатор, который сообщает, являются ли сгенерированные изображения поддельными или оригинальными. Генератор G представляет собой сеть кодера-декодера, в которой входное изображение пропускается через серию прогрессивно понижающих уровней, вплоть до уровня узкого места, где процесс меняется на противоположный. Для передачи достаточной информации слоям декодирования используется архитектура U-Net с пропускаемыми соединениями, и пропускаемое соединение добавляется между слоями i и n - i посредством конкатенации, где n - общее количество слоев, а i - номер слоя. в кодировщике. Архитектура PatchGAN используется для дискриминатора D. Это наказывает структуру выходного изображения в масштабе патчей. Они производят вывод в виде скелетной таблицы.

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

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Общая схема подхода

Результат: Предполагаемые структуры таблиц оцениваются путем сравнения - Номер строки и столбца, Положение верхнего левого угла, Высота строки и ширина столбца

Генетический алгоритм дал 95.5% точности по строкам и 96.7% точности по столбцам при извлечении информации из таблиц.

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Нужно оцифровать документы, поступления or счета-фактуры а кодить лень? Направляйтесь к Нанонеты и создавать модели OCR бесплатно!


[Код] Традиционные подходы

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

Чтобы более точно понять проблему, определим несколько основных терминов, которые будут использоваться в статье:

  • Текст: содержит строку и пять атрибутов (сверху, слева, ширина, высота, шрифт)
  • линия: содержит текстовые объекты, которые, как предполагается, находятся на той же строке в исходном файле
  • Одна линия: строковый объект только с одним текстовым объектом.
  • Многострочный: строковый объект с более чем одним текстовым объектом.
  • Многострочный Заблокировать: набор непрерывных многострочных объектов.
  • Строка: Горизонтальные блоки в таблице
  • Column: Вертикальные блоки в таблице
  • Ячейка: пересечение строки и столбца
  • Ячейка - заполнение: внутренний отступ или пространство внутри ячейки.

Обнаружение таблиц с помощью OpenCV

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

Нам понадобится изображение стола. Мы можем запечатлеть это на телефоне или использовать любое существующее изображение. Ниже приведен фрагмент кода,

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

Здесь мы загрузили одно и то же изображение, две переменные, так как мы будем использовать table_image_contour при рисовании наших обнаруженных контуров на загруженном изображении. Ниже приведено изображение таблицы, которую мы используем в нашей программе:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Изображение стола

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

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

Еще один важный шаг предварительной обработки расширение изображения, Расширение - это простая математическая операция, применяемая к двоичным изображениям (черно-белым), которая постепенно расширяет границы областей пикселей переднего плана (т.е. белые пиксели, как правило).

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

В OpenCV мы используем метод, найтиКонтуры для получения контуров настоящего изображения. Этот метод принимает три аргумента: первый - это расширенное изображение (изображение, которое используется для создания расширенного изображения, - это table_image_contour - метод findContours поддерживает только двоичные изображения), второй - это cv2.RETR_TREE который говорит нам использовать режим поиска контура, третий  cv2.CHAIN_APPROX_SIMPLE который является режимом аппроксимации контура. найтиКонтуры распаковывает два значения, поэтому мы добавим еще одну переменную с именем иерархия, Когда изображения вложены, контуры излучают взаимозависимость. Для представления таких отношений используется иерархия.

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

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

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

Это наш последний шаг. Здесь мы используем метод именованное окно визуализировать нашу таблицу с извлеченным содержимым и вложенными в нее контурами. Ниже приведен фрагмент кода:

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Выходы

Измените значение y на 300 в приведенном выше фрагменте кода, это будет ваш вывод:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

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


Парсинг PDFMiner и Regex

Чтобы извлечь информацию из небольших документов, требуется время для настройки моделей глубокого обучения или написания алгоритмов компьютерного зрения. Вместо этого мы можем использовать регулярные выражения в Python для извлечь текст из PDF-документов. Также помните, что этот метод не работает для изображений. Мы можем использовать это только для извлечения информации из файлов HTML или документов PDF. Это связано с тем, что при использовании регулярного выражения вам необходимо сопоставить содержимое с источником и извлечь информацию. С изображениями вы не сможете сопоставить текст, а регулярные выражения не сработают. Давайте теперь поработаем с простым PDF-документом и извлечем информацию из таблиц в нем. Ниже приведено изображение:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

На первом этапе мы загружаем PDF в нашу программу. Как только это будет сделано, мы преобразуем PDF в HTML, чтобы мы могли напрямую использовать регулярные выражения и тем самым извлекать содержимое из таблиц. Для этого модуль, который мы используем pdfмайнер. Это помогает читать контент из PDF и конвертировать его в файл HTML.

Ниже приведен фрагмент кода:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

Код Кредиты: зевросс

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

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

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

Эта библиотека предоставляет различные встроенные методы для поиска и поиска шаблонов. Ниже приведены некоторые из них:

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

Символы / выражения, которые вы обычно видите в регулярных выражениях, включают:

  • [АЗ] — любая заглавная буква
  • д - цифра
  • w — символ слова (буквы, цифры и символы подчеркивания)
  • s — пробелы (пробелы, табуляции и пробелы)

Теперь, чтобы найти конкретный шаблон в HTML, мы используем регулярные выражения, а затем пишем шаблоны соответствующим образом. Сначала мы разбиваем данные таким образом, чтобы фрагменты адресов были разделены на отдельные блоки в соответствии с именем программы (ANGELS CAMP, APPLE VALLEY и т. Д.):

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

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

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

Это простой пример, объясняющий, как мы извлекаем информацию из файлов PDF с помощью регулярного выражения. После извлечения всей необходимой информации мы загружаем эти данные в файл CSV.

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

Итак, это простой пример, объясняющий, как вы можете вставить извлеченный HTML в файл CSV. Сначала мы создаем файл CSV, находим все наши атрибуты и вставляем по одному в соответствующие столбцы. Ниже скриншот:

Обнаружение таблиц и извлечение информации с использованием Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Снимок экрана: элементы, извлеченные из таблиц с использованием регулярных выражений

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


Проблемы с традиционными методами

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


Обнаружение таблицы

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

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

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

На этом этапе информация извлекается после идентификации таблиц. Есть много факторов относительно того, как контент структурирован и какой контент присутствует в таблице. Следовательно, важно понять все проблемы, прежде чем создавать алгоритм.

  • Плотное содержание: Содержимое ячеек может быть числовым или текстовым. Тем не менее, текстовый контент обычно плотный, содержащий неоднозначные короткие куски текста с использованием сокращений и аббревиатур. Для понимания таблиц текст должен быть неоднозначным, а сокращения и аббревиатуры должны быть расширены.
  • Разные шрифты и форматы: Шрифты обычно бывают разных стилей, цветов и высот. Мы должны убедиться, что они являются общими и их легко идентифицировать. Немногие семейства шрифтов, особенно те, которые подпадают под курсивный или рукописный, немного сложно извлечь Следовательно, использование хорошего шрифта и правильного форматирования помогает алгоритму более точно идентифицировать информацию.
  • Многостраничные PDF-файлы и разрывы страниц: Текстовая строка в таблицах чувствительна к заранее определенному порогу. Кроме того, при распределении ячеек на нескольких страницах становится трудно идентифицировать таблицы. На странице с несколькими таблицами сложно отличить разные таблицы друг от друга. С разреженными и нерегулярными таблицами сложно работать. Следовательно, графические направляющие линии и макет содержимого следует использовать вместе как важные источники для определения областей таблицы.

Таблица преобразования

Последний этап включает преобразование извлеченной информации из таблиц в составление их в виде редактируемого документа, либо в Excel, либо с использованием другого программного обеспечения. Давайте узнаем о нескольких проблемах.

  • Установить макеты: Когда из отсканированных документов извлекаются таблицы различных форматов, нам необходимо иметь правильную компоновку таблиц, чтобы протолкнуть содержимое. Иногда алгоритм не может извлечь информацию из ячеек. Следовательно, не менее важно разработать правильный макет.
  • Разнообразие шаблонов представления стоимости: Значения в ячейках могут быть представлены с использованием различных шаблонов синтаксического представления. Считайте, что текст в таблице равен 6 ± 2. Алгоритм может не преобразовать эту конкретную информацию. Следовательно, извлечение числовых значений требует знания возможных шаблонов представления.
  • Представление для визуализации: Большинство форматов представления для таблиц, таких как языки разметки, на которых могут быть описаны таблицы, предназначены для визуализации. Поэтому сложно автоматически обрабатывать таблицы.

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



Необходимо оцифровать документы, квитанции или счета-фактуры а кодить лень? Направляйтесь к Нанонеты и создавать модели OCR бесплатно!


Обзор

В этой статье мы подробно рассмотрели извлечение информации из таблиц. Мы видели, как современные технологии, такие как Deep Learning и Computer Vision, могут автоматизировать рутинные задачи, создавая надежные алгоритмы для получения точных результатов. В начальных разделах мы узнали о роли извлечения таблиц в облегчении задач отдельных лиц, отраслей и бизнес-секторов, а также рассмотрели варианты использования, посвященные извлечению таблиц из файлов PDF/HTML, автоматизации форм, счет-фактура Автоматизация и т. д. Мы написали алгоритм с помощью Computer Vision для определения положения информации в таблицах с использованием методов пороговой обработки, расширения и обнаружения контуров. Мы обсудили проблемы, с которыми мы можем столкнуться во время процессов обнаружения, извлечения и преобразования таблиц при использовании обычных методов, и заявили, как глубокое обучение может помочь нам в преодолении этих проблем. Наконец, мы рассмотрели несколько архитектур нейронных сетей и поняли их способы достижения извлечения таблицы на основе заданных обучающих данных.



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

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

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