Автоматизація оцифровки квитанцій за допомогою оптичного розпізнавання символів і глибокого навчання PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Хочете автоматизувати вилучення даних із квитанцій? Ознайомтеся з попередньою підготовкою Nanonets Квитанція OCR or створити свій власний налаштована квитанція OCR. Ви також можете заплануйте демо щоб дізнатися більше про наші випадки використання AP!


Квитанція OCR або оцифрування квитанції вирішує проблему автоматичного вилучення інформації з квитанції. У цій статті я розглядаю теорію оцифрування квитанцій і реалізую наскрізний конвеєр за допомогою OpenCV і Тессеракт. Я також переглядаю кілька важливих документів, які оцифровують квитанції за допомогою глибокого навчання.

Що таке оцифрування квитанції?

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

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

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Потрібен надійний квитанція OCR or сканер квитанції витягти дані з квитанцій? Перевірте Nanonets API OCR квитанції!


Кому буде корисна оцифровка квитанцій?

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

Автоматизація кредиторської та дебіторської заборгованості

Розрахунок кредиторської та дебіторської заборгованості вручну є дорогим, трудомістким і може призвести до плутанини між менеджерами, клієнтами та постачальниками. Завдяки оцифровці компанії можуть усунути ці недоліки та отримати більше переваг – підвищення прозорості, аналіз даних, покращення оборотного капіталу та легше відстеження.

Оптимізація ланцюга поставок

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

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


Маєте на увазі проблему OCR? Хочеться оцифрувати рахунки, PDF-файли чи номерні знаки? Перейдіть до Нанонети і будуйте моделі OCR безкоштовно!


Чому це складна проблема?

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Ось список кількох речей, які ускладнюють вирішення проблеми

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

Традиційний канал оцифрування квитанцій

Типовий конвеєр для цього типу наскрізного підходу включає:

  • Попередня обробка
  • Оптичне розпізнавання символів
  • Видобуток інформації
  • Дамп даних
Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Давайте глибше зануримося в кожну частину трубопроводу. Першим кроком процесу є попередня обробка.

Попередня обробка

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

Масштабування сірого — це просто перетворення зображення RGB у зображення у відтінках сірого.

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

Більшість механізмів OCR добре працюють на чорно-білих зображеннях. Цього можна досягти за допомогою порогового значення, яке є призначенням значень пікселів по відношенню до наданого порогового значення. Кожне значення пікселя порівнюється з пороговим значенням. Якщо значення пікселя менше за поріг, воно встановлюється на 0, в іншому випадку встановлюється максимальне значення (зазвичай 255).

OpenCV надає різні параметри порогового значення – просте порогове визначення, адаптивне порогове визначення

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

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

Наступний крок у трубопроводі OCR. Він використовується для зчитування тексту з зображень, таких як відсканований документ або зображення. Ця технологія використовується для перетворення практично будь-яких зображень, що містять письмовий текст (друкований, рукописний або друкований) у машиночитані текстові дані.. Розпізнавання тексту включає 2 кроки – визначення тексту та розпізнавання тексту.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Існує ряд підходів до OCR. Звичайний підхід комп’ютерного бачення полягає в тому

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

Застосування фільтрів і класифікації зображень є досить простим (подумайте про класифікацію MNIST за допомогою SVN), але відповідність контурів є дуже складною проблемою і вимагає багато ручних зусиль і не піддається узагальненню.

Далі йдуть підходи глибокого навчання. Глибоке навчання дуже добре узагальнює. Одним з найпопулярніших підходів для визначення тексту є EAST. EAST (Ефективний точний детектор тексту сцени) — це простий, але потужний підхід для виявлення тексту. Мережа EAST насправді є версією добре відомої U-Net, яка добре підходить для виявлення функцій різного розміру.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

CRNN та STN-OCR (Spatial Transformer Networks) — інші популярні документи, які виконують OCR.

Видобуток інформації

Найпоширеніший підхід до проблеми вилучення інформації заснований на правилах, коли правила записуються після OCR для вилучення необхідної інформації. Це потужний і точний підхід, але він вимагає від вас написання нових правил або шаблонів для нового типу документів.

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

  • Intellix від DocuWare потрібен шаблон, анотований відповідними полями.
  • SmartFix використовує спеціально розроблені правила конфігурації для кожного шаблону

Методи, засновані на правилах, значною мірою покладаються на попередньо визначені правила шаблону для вилучення інформації з конкретних макетів рахунків-фактур

Один із підходів, який став дуже поширеним за останні кілька років, — це використовувати стандартну структуру виявлення об’єктів, як-от YOLO, Faster R-CNN для розпізнавання полів. Таким чином, замість виявлення чистого тексту, розпізнавання поля та визначення тексту виконуються одночасно. Це зменшує конвеєр (Виявлення тексту→ Розпізнавання → Вилучення для виявлення → Розпізнавання). Немає необхідності писати правила, оскільки детектор об’єктів вчиться розпізнавати ці поля.

Дамп даних

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

Оцифрування квитанції за допомогою Тессеракт

Тепер, коли у нас є уявлення про конвеєр, давайте реалізуємо його на прикладі квитанції. Це квитанція, з якою ми будемо працювати. Наша мета в кінці цього — витягти назву ресторану, придбані предмети з їх кількістю та вартістю, датою покупки та загальною кількістю.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Попередня обробка

Оскільки наша квитанція вже відображається у відтінках сірого й шуму не так багато, я збираюся виконати порогове значення, застосувавши поріг 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 і глибокого навчання

Розпізнавання тексту

Для виявлення тексту я буду використовувати бібліотеку з відкритим кодом під назвою Тессеракт. Це остаточна бібліотека OCR, яка розробляється Google з 2006 року. Остання версія Tesseract (v4) підтримує розпізнавання символів глибокого навчання, яке є значно точнішим. Сам основний механізм OCR використовує мережу довготривалої короткострокової пам'яті (LSTM).

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

Для ubuntu

sudo apt install tesseract-ocr

Для macOS

brew install tesseract --HEAD

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

Перевірте свою версію тессеракта.

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 і глибокого навчання

Розпізнавання тексту

Ми будемо Tesseract для виконання 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 і глибокого навчання

Я буду витягувати назву ресторану, дату транзакції, куплені елементи, їх кількість, загальну вартість за один продукт і загальну суму, використовуючи прості команди Python і регулярні вирази.

Це словник, де я буду зберігати витягнуту інформацію.

receipt _ocr = {}

Перший крок – витягти назву ресторану. Розташування назви ресторану буде незмінним у всіх квитанціях, і це в перших 2 рядках. Давайте використаємо це для створення правила.

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, тобто швейцарський франк. Визначимо всі прояви ХСН. Тепер ми можемо виявляти рядки, розпізнаючи символи між 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

Якщо ви помітили, Tesseract пропустив один елемент, оскільки виявив CH замість CHF. У наступному розділі я розповім про проблеми традиційних систем OCR.

# 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'}

Вся ключова інформація була вилучена та скинута в receipt_json..

Проблеми із традиційним підходом

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

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

Чому наскрізний конвеєр глибокого навчання краще?

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

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

Глибоке навчання та вилучення інформації

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

МИЛКА

CUTIE: Навчання розуміння документів за допомогою згортаючого універсального витягувача текстової інформації

Цей документ пропонує метод вилучення ключової інформації на основі навчання з обмеженою потребою в людських ресурсах. Він поєднує в собі інформацію як семантичного значення, так і просторового розподілу текстів у документах. Запропонована ними модель, Convolutional Universal Text Information Extractor (CUTIE), застосовує згорткові нейронні мережі до текстів із сіткою, де тексти вбудовуються як функції із семантичними конотаціями.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Пропонована модель, вирішує проблему вилучення ключової інформації

  • Спочатку створюємо тексти з сіткою із запропонованим метод позиційного відображення сітки. Щоб генерувати дані сітки для згорткової нейронної мережі, відскановане зображення документа обробляється механізмом OCR, щоб отримати тексти та їх абсолютне/відносне положення. Тексти зіставляються з оригінального відсканованого зображення документа на цільову сітку, таким чином, що відображена сітка зберігає вихідне просторове співвідношення між текстами, але більше підходить для використання як вхідних даних для згорткової нейронної мережі.
  • Потім модель CUTIE застосовується до текстів із сіткою. Багата семантична інформація кодується з текстів із сіткою на самому початку згорткової нейронної мережі за допомогою шару вбудовування слів.

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

Модель CUTIE

У них є 2 моделі CUTIE-A і CUTIE-B. Запропонований CUTIE-A є згортковою нейронною мережею великої ємності, яка об’єднує функції з багатьма роздільною здатністю без втрати функцій високої роздільної здатності. CUTIE-B — це згортка мережа зі згортковою згорткою для розширення поля зору та модулем об’єднання просторової піраміди (ASPP) для захоплення багатомасштабних контекстів. І CUTIE-A, і CUITE-B здійснюють процес кодування семантичного значення з шаром вбудовування слів на самому початковому етапі.

Завдання CUTIE має схожість із завданням семантичної сегментації. Відображена сітка містить розрізнені точки даних (текстові маркери) на відміну від зображень, нанесених пікселями. Ключові тексти сітки з позиційним відображенням або близькі, або віддалені один від одного через різні типи макетів документів. Таким чином, включення можливості багатомасштабної обробки контексту приносить користь мережі.

Набір даних

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

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

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

результати

Загальна продуктивність оцінюється з використанням середньої точності (AP – і вимірюється з точки зору точності для кожного класу для 9 класів,.) і м’якої середньої точності (softAP), де передбачення класу ключової інформації визначається як правильне, якщо є позитивні основні істини. є правильно передбаченими, навіть якщо деякі помилкові результати включені в остаточне передбачення. спільний аналіз AP і softAP забезпечує краще розуміння продуктивності моделі.

Результати можна побачити в таблиці нижче.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

GCN для VRD

Згортка графіка для мультимодального вилучення інформації з візуально багатих документів

У цій статті представлена ​​модель на основі згортки графіка для поєднання текстової та візуальної інформації, представленої у візуально багатих документах (VRD). Вбудовування графіків навчаються узагальнювати контекст текстового сегмента в документі, а потім поєднуються з вбудовуваннями тексту для вилучення об’єктів.

У цій статті вони називають документ VRD, і я буду дотримуватися цього.

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Вбудовування графіків, створені за допомогою згортки графіка, підсумовують контекст текстового сегмента в документі, який надалі поєднується з вбудовуваннями тексту для вилучення об’єктів за допомогою стандартної моделі BiLSTM-CRF.

Model

Модель спочатку кодує кожен сегмент тексту в документі для вбудовування графіка, використовуючи кілька шарів згортки графіка. Вбудовування представляє інформацію в текстовому сегменті з урахуванням його візуального та текстового контексту. Візуальний контекст — це макет документа та відносне розташування окремого сегмента до інших сегментів. Текстовий контекст – це сукупність текстової інформації в документі загалом; Модель вчиться призначати вищі ваги текстам із сусідніх сегментів. Потім документ об’єднує вбудовування графіків із вбудовуваннями тексту та застосовує стандартну модель BiLSTM-CRF для вилучення об’єктів.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Набір даних

Використовуються два реальних набори даних. Це рахунки-фактури з податку на додану вартість (ПДВ) і міжнародні квитанції про покупку (ІПР). VATI складається з 3000 зображень, завантажених користувачами, і має 16 об’єктів. Прикладом об’єктів є імена покупця/продавця, дата та сума податку. Рахунки-фактури написані китайською мовою та мають фіксований шаблон, оскільки це національний стандартний рахунок-фактура.

IPR — це набір даних із 1500 відсканованих квитанційних документів англійською мовою, які мають 4 точні об’єкти (номер рахунка-фактури, назва постачальника, назва платника та загальна сума). Існує 146 шаблонів квитанцій.

результати

Оцінка F1 використовується для оцінки ефективності моделі в усіх експериментах. У таблиці нижче наведено результати для 2 наборів даних.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Базовий рівень I застосовує BiLSTM-CRF до кожного текстового сегмента, де кожен текстовий сегмент є окремим реченням.

Baseline II застосовує модель тегування до об’єднаних текстових сегментів.

Швидше-RCNN + AED

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

У цій статті представлено підхід глибокого навчання для розпізнавання відсканованих квитанцій. Система розпізнавання складається з двох основних модулів: визначення тексту на основі Connectionist Text Proposal Network і розпізнавання тексту на основі Attention-based Encoder-Decoder. Система досягла 71.9% балів F1 за завдання виявлення та розпізнавання.

Виявлення тексту

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Розпізнавання тексту

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Набір даних

Використовується набір даних SROIE 2019. Вони розділили навчальні дані на навчання, перевірку та тестування та випадковим чином вибрали 80% квитанцій для навчання, 10% квитанцій для перевірки та решту для тестування. В результаті отримано 500 квитанцій на навчання, 63 квитанції на підтвердження та 63 на тестування.

результати

Для виявлення тексту в папері використовується перетин перетинання (TIoU) з урахуванням щільності. Для розпізнавання тексту в папері використовуються F1 , Precision і Recall.

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Звичайно, є простіший та інтуїтивно зрозуміліший спосіб зробити це.


Потрібен надійний квитанція OCR витягти дані з квитанцій? Перевірте Nanonets API OCR квитанції!


OCR з нанонетами

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

Автоматизація оцифровки квитанцій за допомогою OCR і глибокого навчання

Команда API OCR Nanonets дозволяє легко створювати моделі OCR. Вам не доведеться турбуватися про попередню обробку зображень або піклуватися про відповідність шаблонів або створення механізмів на основі правил, щоб підвищити точність моделі OCR.

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

Використання графічного інтерфейсу: https://app.nanonets.com/

Ви також можете використовувати Nanonets-OCR API, виконавши наведені нижче дії:

Крок 1: Клонуйте Repo, встановіть залежності

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 і глибокого навчання

Крок 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

Подальше читання

Оновлення:
‌ Додано більше матеріалів для читання про останні досягнення в автоматизації оцифровки квитанцій за допомогою OCR і Deep Learning.

Часова мітка:

Більше від ШІ та машинне навчання