Автоматизация оцифровки чеков с помощью OCR и Deep Learning PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Хотите автоматизировать извлечение данных из чеков? Ознакомьтесь с предварительно обученными Nanonets Распознавание чеков or Построй свой собственный индивидуальное распознавание текста квитанции. Вы также можете запланировать демонстрацию чтобы узнать больше о наших вариантах использования точек доступа!


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

Что такое оцифровка квитанции?

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

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

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Нужен надежный квитанция OCR or сканер чеков извлечь данные из квитанций? Посетите Нанонетс API OCR квитанции!


Кому будет полезна оцифровка квитанции?

Вот несколько областей, где оцифровка квитанций может оказать огромное влияние:

Автоматизация кредиторской и дебиторской задолженности

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

Оптимизация цепочки поставок

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

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


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


Почему это сложная проблема?

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

  • Рукописный текст
  • Мелкие шрифты
  • Шумные изображения
  • Выцветшие изображения
  • Движение камеры и дрожание
  • Водяные знаки
  • Морщины
  • Выцветший текст

Традиционный трубопровод оцифровки квитанции

Типичный конвейер для такого сквозного подхода включает в себя:

  • предварительная обработка
  • Оптическое распознавание символов
  • Извлечение информации
  • Вывод данных
Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

предварительная обработка

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

Оттенки серого - это просто преобразование изображения RGB в изображение в градациях серого.

Удаление шума, как правило, включает в себя удаление шума соли и перца или гауссова шума.

Большинство механизмов OCR хорошо работают с черно-белыми изображениями. Этого можно достичь с помощью пороговой обработки, которая представляет собой присвоение значений пикселей по отношению к предоставленному пороговому значению. Значение каждого пикселя сравнивается с пороговым значением. Если значение пикселя меньше порогового значения, оно устанавливается на 0, в противном случае устанавливается максимальное значение (обычно 255).

OpenCV предоставляет различные варианты определения порогов — простое пороговое значение, адаптивное пороговое значение.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

  • Использование фильтров для отделения символов от фона
  • Применить обнаружение контура для распознавания отфильтрованных символов
  • Используйте классификацию магов для идентификации персонажей

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

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

ЦРНН и СТН-OCR (Пространственные Трансформаторные Сети) - другие популярные документы, которые выполняют OCR.

Извлечение информации

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

Несколько основанных на правилах счет-фактура системы анализа существуют в литературе.

  • Intellix от DocuWare требуется шаблон с соответствующими полями.
  • СмартФикс использует специально разработанные правила конфигурации для каждого шаблона

Основанные на правилах методы в значительной степени зависят от предварительно определенных правил шаблона для извлечения информации из определенных макетов счетов-фактур.

Один из подходов, который стал очень распространенным в последние несколько лет, заключается в использовании стандартной среды обнаружения объектов, такой как YOLO, Faster R-CNN, для распознавания полей. Таким образом, вместо обнаружения чистого текста одновременно выполняется распознавание полей и обнаружение текста. Это делает конвейер меньше (Обнаружение текста → Распознавание → От извлечения к обнаружению → Распознавание). Нет необходимости писать какие-либо правила, поскольку детектор объектов учится распознавать эти поля.

Вывод данных

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

Оцифровка чека с использованием Тессеракт

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

предварительная обработка

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

Сначала нам нужно будет установить OpenCV.

pip install opencv-python

Вот код для порога.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

Вот как выглядит результат.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Обнаружение текста

Для обнаружения текста я буду использовать библиотеку с открытым исходным кодом Тессеракт, Это уникальная библиотека OCR, разработанная Google с 2006 года. Последний выпуск Tesseract (v4) поддерживает технологию OCR, основанную на глубоком обучении, которая значительно точнее. Базовый механизм OCR сам использует сеть с кратковременной памятью (LSTM).

Сначала давайте установим последнюю версию Tesseract.

Для убунту

sudo apt install tesseract-ocr

Для macOS

brew install tesseract --HEAD

Для Windows вы можете скачать двоичные файлы из этого страница

Проверьте свою версию Tesseract.

tesseract -v

Вывод -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Установите ваши привязки Tesseract + Python

Теперь, когда у нас установлен двоичный файл Tesseract, нам нужно установить привязки Tesseract + Python, чтобы наши скрипты Python могли взаимодействовать с Tesseract. Нам также нужно установить пакет немецкого языка, так как квитанция на немецком языке.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

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

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Вот вывод кода обнаружения текста.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Распознавание текста

Мы будем Тессеракт, чтобы выполнить OCR. Tesseract 4 использует подход глубокого обучения, который работает значительно лучше, чем большинство других реализаций с открытым исходным кодом.

Вот код распознавания текста. Несмотря на то, что это очень простой однострочный материал, под капотом много всего.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Вот сырой вывод.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Вот форматированный вывод

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

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


Извлечение информации

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

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

Это словарь, в котором я буду хранить извлеченную информацию.

receipt _ocr = {}

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

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Далее мы извлекаем дату транзакции. Регулярное выражение даты довольно просто.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Вывод -

‘30.10.2007’

Далее мы извлекаем всю информацию, касающуюся предметов и стоимости.

Элементы содержат CHF, который является швейцарским франком. Давайте обнаружим все случаи CHF. Теперь мы можем обнаруживать строки, распознавая символы от 2 n до содержащих CHF. Я также определяю общее количество.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Вывод -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Если вы заметили, Тессеракт пропустил один элемент, потому что он обнаружил CH вместо CHF. В следующем разделе я расскажу о проблемах в традиционных системах распознавания.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Печать нашего вывода JSON -

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Вся ключевая информация была извлечена и сброшена в квитанцию

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

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

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

Почему сквозной конвейер глубокого обучения лучше?

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

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

Глубокое обучение и извлечение информации

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

Милашка

CUTIE: научиться понимать документы с помощью сверточного универсального экстрактора текстовой информации

Эта статья предлагает основанный на обучении метод извлечения ключевой информации с ограниченными человеческими ресурсами, Он объединяет информацию как из семантического значения, так и из пространственного распределения текстов в документах. Предложенная ими модель, Convolutional Universal Text Information Extractor (CUTIE), применяет сверточные нейронные сети к сетчатым текстам, где тексты внедряются как элементы с семантической коннотацией.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Предлагаемая модель, решает ключевую проблему извлечения информации путем

  • Сначала создание текстов с сеткой с предложенным метод позиционного отображения сетки, Чтобы сгенерировать данные сетки для сверточной нейронной сети, отсканированное изображение документа обрабатывается механизмом OCR для получения текстов и их абсолютных / относительных положений. Тексты отображаются из исходного отсканированного изображения документа в целевую сетку, так что отображенная сетка сохраняет исходную пространственную взаимосвязь между текстами, но более подходит для использования в качестве входных данных для сверточной нейронной сети.
  • Затем модель CUTIE применяется к текстам с сеткой. Богатая семантическая информация кодируется из сетчатых текстов на самой начальной стадии сверточной нейронной сети со слоем внедрения слов.

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

Милая модель

У них есть 2 модели CUTIE-A и CUTIE-B. Предложенный CUTIE-A представляет собой сверточную нейронную сеть с высокой пропускной способностью, которая объединяет функции с несколькими разрешениями без потери функций с высоким разрешением. CUTIE-B - это сверточная сеть с гибкой сверткой для расширения поля зрения и модулем пула пространственной пирамиды (ASPP) для захвата многомасштабных контекстов. И CUTIE-A, и CUITE-B проводят процесс кодирования семантического значения со слоем встраивания слов на самой начальной стадии.

Задача CUTIE имеет сходство с задачей семантической сегментации. Сопоставленная сетка содержит разбросанные точки данных (текстовые маркеры) в отличие от изображений, растянутых в пикселях. Текстовые ключевые позиционные ключевые таблицы расположены близко или удалены друг от друга из-за различных типов макетов документов. Таким образом, возможность многоуровневой обработки контекста приносит пользу сети.

Dataset

Предложенный метод оценивается на основе надежной задачи чтения ICDAR 2019 для набора данных SROIE, а также для самостоятельного построения набора данных с 3 типами изображений отсканированных документов.

Ассоциация ICDAR 2019 SROIE набор данных используется, который содержит 1000 полных сканированных изображений квитанции. Каждое изображение квитанции содержит около четырех ключевых текстовых полей, таких как название товара, цена за единицу, дата и общая стоимость. Текст, аннотированный в наборе данных, в основном состоит из цифр и английских символов.

Собственный набор данных содержит 4 484 отсканированных аннотированных испанских чековых документа, включая квитанции на такси, квитанции о еде (ME) и квитанции отеля, с 9 различными ключевыми классами информации.

Итоги

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

Вы можете увидеть результаты в таблице ниже.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

GCN для VRD

Свертка графов для мультимодального извлечения информации из визуально насыщенных документов

В этой статье представлена ​​модель на основе свертки графов для объединения текстовой и визуальной информации, представленной в документах Visually Rich (VRD). Внедрения графиков обучаются обобщению контекста текстового сегмента в документе и дополнительно объединяются с встраиванием текста для извлечения сущностей.

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

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

Модель

Модель сначала кодирует каждый сегмент текста в документе для встраивания графа, используя несколько слоев свертки графа. Внедрение представляет информацию в текстовом сегменте с учетом ее визуального и текстового контекста. Визуальный контекст - это расположение документа и относительные позиции отдельного сегмента к другим сегментам. Текстовый контекст - это совокупность текстовой информации в документе в целом; Модель учится назначать более высокие веса для текстов из соседних сегментов. Затем статья объединяет вложения графиков с встраиваниями текста и применяет стандартную модель BiLSTM-CRF для извлечения сущностей.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Dataset

Используются два реальных набора данных. Это налоговые накладные ValueAdded (VATI) и международные квитанции о покупке (IPR). VATI состоит из 3000 загруженных пользователем фотографий и имеет 16 объектов для точного. Примерами субъектов являются имена покупателя / продавца, дата и сумма налога. Счета выставляются на китайском языке, и у них есть фиксированный шаблон, так как это счет-фактура национального стандарта.

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

Итоги

Оценка F1 используется для оценки характеристик модели во всем эксперименте. В таблице ниже приведены результаты для наборов данных thr 2.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Базовая линия I применяет BiLSTM-CRF к каждому текстовому сегменту, где каждый текстовый сегмент представляет собой отдельное предложение.

Baseline II применяет модель тегирования к объединенным текстовым сегментам.

Быстрее-RCNN + AED

Подход глубокого обучения для распознавания квитанций

В этой статье представлен метод глубокого обучения для распознавания отсканированных квитанций. Система распознавания имеет два основных модуля: обнаружение текста на основе сети предложений текста Connectionist и распознавание текста на основе Encoder-Decoder на основе внимания. Система достигла 71.9% балла F1 для задачи обнаружения и распознавания.

Обнаружение текста

Структура CTPN аналогична Faster R-CNN с добавлением уровня LSTM. Модель сети в основном состоит из трех частей: извлечение признаков с помощью VGG16, двунаправленный LSTM и регрессия ограничивающего прямоугольника

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Распознавание текста

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

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Dataset

Используется набор данных из SROIE 2019. Они разделили данные обучения на обучение, валидацию и тестирование и случайным образом выбрали 80% квитанций для обучения, 10% квитанций для проверки и остальные для тестирования. В результате 500 квитанций за обучение, 63 квитанции за проверку и 63 за тестирование.

Итоги

Для распознавания текста в документе используется функция пересечения со слиянием (TIoU), ориентированная на герметичность. Для распознавания текста в документе использовались F1, Precision и Recall.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Таблица I показывает результат CTPN с тремя условиями: CTPN на исходных изображениях; предварительная обработка + CTPN, предварительная обработка + CTPN + проверка OCR. Таблица 2 показывает результаты сети AED.

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Конечно, есть более простой и интуитивно понятный способ сделать это.


Нужен надежный квитанция OCR извлечь данные из квитанций? Посетите Нанонетс API OCR квитанции!


OCR с нанонцами

Обновление №1: Мы только что выпустили наш квитанция OCR предварительно обученная модель. Зайдите на https://app.nanonets.com и начните тестирование!

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

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

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

Использование GUI: https://app.nanonets.com/

Вы также можете использовать API-интерфейс Nanonets-OCR, выполнив следующие действия:

Шаг 1: клонировать репо, установить зависимости

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Шаг 2: Получите бесплатный ключ API
Получите ваш бесплатный ключ API от http://app.nanonets.com/#/keys

Автоматизация оцифровки квитанций с помощью OCR и Deep Learning

Шаг 3. Установите ключ API в качестве переменной среды

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Шаг 4: Создайте новую модель

python ./code/create-model.py

Примечание: Это генерирует MODEL_ID, который вам нужен для следующего шага

Шаг 5. Добавьте идентификатор модели в качестве переменной среды

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Примечание: вы получите YOUR_MODEL_ID с предыдущего шага

Шаг 6: Загрузить данные обучения
Данные обучения находятся в images (файлы изображений) и annotations (аннотации для файлов изображений)

python ./code/upload-training.py

Шаг 7: Модель поезда
Как только изображения были загружены, начните обучение модели

python ./code/train-model.py

Шаг 8: Получить модельное состояние
На тренировку модели уходит ~ 2 часа. Вы получите электронное письмо, когда модель будет обучена. Тем временем вы проверяете состояние модели

python ./code/model-state.py

Шаг 9: сделайте прогноз
После того, как модель обучена. Вы можете делать прогнозы, используя модель

python ./code/prediction.py ./images/151.jpg

Дальнейшее чтение

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

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

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