OCR ve Derin Öğrenme PlatoBlockchain Veri Zekası ile Makbuz Dijitalleştirmeyi Otomatikleştirme. Dikey Arama. Ai.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Makbuzlardan veri çıkarmayı otomatikleştirmek mi istiyorsunuz? Nanonets'in ön eğitimine göz atın Makbuz OCR'si or kendininkini inşa et özelleştirilmiş makbuz OCR'si. Ayrıca bir demo planlayın AP kullanım durumlarımız hakkında daha fazla bilgi edinmek için!


Makbuz OCR'si veya makbuzun dijitalleştirilmesi, bir makbuzdan otomatik olarak bilgi çıkarma zorluğunu ortadan kaldırır. Bu makalede, makbuzların dijitalleştirilmesinin ardındaki teoriyi ele alacağım ve OpenCV kullanarak uçtan uca bir işlem hattı uygulayacağım ve teserakt. Ayrıca Derin Öğrenme kullanarak Makbuz Sayısallaştırması yapan birkaç önemli makaleyi de inceliyorum.

Makbuz Dijitalleştirme nedir?

Makbuzlar, şirketler arasında ticaretin gerçekleşmesi için gereken bilgileri taşır ve bunların çoğu kağıt üzerinde veya PDF'ler ve kağıt / basılı kopya resimleri gibi yarı yapılandırılmış formatlardadır. Bu bilgileri etkin bir şekilde yönetmek için şirketler bu belgelerde yer alan ilgili bilgileri çıkarır ve saklar. Geleneksel olarak bu, ilgili bilgilerin manuel olarak çıkarılması ve emek-yoğun ve pahalı bir işlem olan bir veri tabanına girilmesi ile elde edilmiştir.

Makbuz sayısallaştırma, bir makbuzdan otomatik olarak bilgi alma zorluğunun üstesinden gelir.

Makbuzlardan önemli bilgileri çıkarmak ve bunları yapılandırılmış belgelere dönüştürmek, verimli arşivleme, hızlı indeksleme ve belge analitiği gibi birçok uygulama ve hizmete hizmet edebilir. Birçok finans, muhasebe ve vergilendirme alanında belge yoğun süreçlerin ve ofis otomasyonunun düzene sokulmasında kritik roller oynarlar.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

sağlam lazım makbuz OCR or makbuz tarayıcı makbuzlardan veri çıkarmak için? Nanonets'e göz atın makbuz OCR API'si!


Makbuz Dijitalleştirmeyi kim yararlı bulacak?

Makbuz Dijitalleştirmenin büyük bir etki yaratabileceği birkaç alan şunlardır:

Borç ve alacak hesapları otomasyonu

Borç Hesaplarını (AP) ve Alacak Hesaplarını (AR) manuel olarak hesaplamak maliyetli, zaman alıcıdır ve yöneticiler, müşteriler ve satıcılar arasında kafa karışıklığına yol açabilir. Dijitalleşme ile şirketler bu dezavantajları ortadan kaldırabilir ve daha fazla avantaja sahip olabilir - Artan Şeffaflık, Veri Analitiği, Gelişmiş işletme sermayesi ve daha kolay takip.

Tedarik zinciri optimizasyonu

Tedarik zincirleri, birçok şirketin düzgün işleyişinin bel kemiğidir. Görevleri, bilgi akışlarını ve ürün akışlarını yönetmek, tedarik ve üretimin tam kontrolünü sağlamanın anahtarıdır. Kuruluşların teslimat sürelerini karşılaması ve üretim maliyetlerini kontrol etmesi için bu çok önemlidir.

Bu günlerde gerçekten başarılı olan şirketlerin önemli bir ortak noktası var: dijitalleştirilmiş bir tedarik zinciri. 89% şirket dijital tedarik zincirleri ile uluslararası tedarikçilerden mükemmel siparişler alarak zamanında teslimat sağlar. Yeni nesil dijital Tedarik Zinciri 4.0'ı gerçekleştirmenin kilit unsurlarından biri, veri yakalama ve yönetimini otomatikleştirmektir ve bu verilerin çoğu, makbuzlar ve faturalar. Makbuzların manuel olarak girilmesi, tedarik zincirinde bir darboğaz görevi görür ve gereksiz gecikmelere yol açar. Bu makbuz işlemenin dijitalleştirilmesi, zaman ve verimlilik açısından önemli kazanımlar sağlayabilir.


Aklınızda bir OCR sorunu mu var? dijitalleştirmek istiyorum faturalar, PDF'ler veya plakalar? Başını aşmak Nanonetler ve OCR modellerini ücretsiz oluşturun!


Neden zor bir problem?

Makbuzların pek çok varyasyonu olduğundan ve bazen düşük kaliteli olduğundan, makbuz dijitalleştirmesi zordur. Makbuzları taramak, dijital kopyamıza çeşitli eserler de getirir. Bu eserler, birçok okunabilirlik sorunu ortaya çıkarır.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

İşte çözmeyi zor bir sorun haline getiren birkaç şeyin listesi.

  • El yazısı metin
  • Küçük yazı tipleri
  • Gürültülü görüntüler
  • Soluk görüntüler
  • Kamera hareketi ve titremesi
  • Filigranlar
  • Kırışıklıklar
  • Soluk metin

Geleneksel Bir Makbuz Sayısallaştırma Hattı

Bu tür uçtan uca bir yaklaşım için tipik bir boru hattı şunları içerir:

  • Ön İşleme
  • Optik Karakter Tanıma
  • Bilgi Çıkarma
  • Veri dökümü
OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Boru hattının her bir parçasını daha derinlemesine inceleyelim. Sürecin ilk adımı Ön İşlemdir.

Ön İşleme

Taranan makbuzların çoğu gürültülüdür ve artefaktlara sahiptir ve bu nedenle OCR ve bilgi çıkarma sistemlerinin iyi çalışması için makbuzları önceden işlemek gerekir. Yaygın ön işleme yöntemleri şunları içerir: Gres ölçekleme, Eşikleme (İkileştirme) ve Gürültü giderme.

Gri tonlama, bir RGB görüntüsünü gri tonlamalı bir görüntüye dönüştürmektir.

Gürültü giderme, tipik olarak Tuz ve Biber gürültüsünü veya Gauss gürültüsünü gidermeyi içerir.

Çoğu OCR motoru, Siyah Beyaz görüntülerde iyi çalışır. Bu, sağlanan eşik değeriyle ilişkili olarak piksel değerlerinin atanması olan eşikleme ile elde edilebilir. Her bir piksel değeri, eşik değeri ile karşılaştırılır. Piksel değeri eşikten küçükse 0'a, aksi takdirde maksimum değere (genellikle 255) ayarlanır.

OpenCV çeşitli eşikleme seçenekleri sunar – Basit Eşikleme, Uyarlanabilir Eşikleme

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Optik Karakter Tanıma

Boru hattındaki bir sonraki adım OCR. Taranmış belge veya resim gibi görüntülerden metin okumak için kullanılır. Bu teknoloji, yazılı metin içeren (daktilo edilmiş, el yazısı veya basılmış) hemen hemen her türlü görüntüyü makine tarafından okunabilir metin verilerine dönüştürmek için kullanılır.. OCR, 2 adım içerir - metin algılama ve metin tanıma.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

OCR için bir dizi yaklaşım vardır. Geleneksel bilgisayarla Görme yaklaşımı,

  • Karakterleri arka plandan ayırmak için filtrelerin kullanılması
  • Filtrelenen karakterleri tanımak için kontur algılama uygulayın
  • Karakterleri tanımlamak için mage sınıflandırmasını kullanın

Filtreleri ve görüntü sınıflandırmasını uygulamak oldukça basittir (SVN kullanarak MNIST Sınıflandırmasını düşünün), ancak kontur eşleştirmesi çok zor bir sorundur ve çok fazla manuel çaba gerektirir ve genelleştirilemez.

Daha sonra Derin Öğrenme yaklaşımları geliyor. Derin Öğrenme çok iyi genelleşir. Metin algılama için en popüler yaklaşımlardan biri DOĞU'dur. EAST (Etkili doğru sahne metni detektörü), metin algılama için basit ama güçlü bir yaklaşımdır. EAST ağı aslında iyi bilinen U-Net'in farklı boyutlardaki özellikleri tespit etmek için iyi olan bir versiyonudur.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

CRNN ve STN-OCR (Spatial Transformer Networks), OCR gerçekleştiren diğer popüler kağıtlardır.

Bilgi Çıkarma

Bilgi Çıkarma sorununa en yaygın yaklaşım kural tabanlıdır, burada kurallar gerekli bilgiyi çıkarmak için OCR'den sonra yazılır. Bu güçlü ve doğru bir yaklaşımdır, ancak yeni bir belge türü için yeni kurallar veya şablonlar yazmanızı gerektirir.

Birkaç kural tabanlı fatura Literatürde analiz sistemleri mevcuttur.

Kural tabanlı yöntemler, belirli fatura düzenlerinden bilgi almak için büyük ölçüde önceden tanımlanmış şablon kurallarına dayanır

Son birkaç yılda çok yaygın hale gelen bir yaklaşım, alanları tanımak için YOLO, Daha Hızlı R-CNN gibi standart bir Nesne Algılama çerçevesi kullanmaktır. Böylece saf metin algılama yerine, alan tanıma ve metin algılama aynı anda gerçekleştirilir. Bu, boru hattını küçültür (Metin Algılama → Tanıma → Algılamaya Çıkartma → Tanıma). Nesne algılayıcısı bu alanları tanımayı öğrendiği için herhangi bir kural yazmaya gerek yoktur.

Veri Dökümü

Bilgilerinizi aldıktan sonra, kullanım durumumuzun gerektirdiği şekilde veri dökümü yapılabilir. Alan bilgilerini depolamak için genellikle bir JSON biçimi uygundur. Bu JSON dosyaları, verilerle kimin ve nasıl çalışmak istediğine bağlı olarak kolayca XML dosyalarına, Excel sayfalarına, CSV dosyalarına veya düz metin dosyalarına dönüştürülebilir.

Fiş Sayısallaştırma kullanarak teserakt

Artık ardışık düzen hakkında bir fikrimiz olduğuna göre, bunu örnek bir fiş üzerinde uygulayalım. Bu, üzerinde çalışacağımız makbuzdur. Bunun sonunda amacımız, Restoran adını, satın alınan Ürünleri miktarı ve maliyeti, satın alma tarihi ve toplamı ile çıkarmaktır.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Ön İşleme

Makbuzumuz zaten gri tonlamalı olduğundan ve çok fazla gürültü olmadığından, yalnızca 210'luk bir eşik uygulayarak eşikleme yapacağım. Doğru çıktıyı elde etmek için değeri değiştirebilirsiniz. Çok daha az ve çok şey kaçıracaksınız. 255'e çok yakın olması her şeyi karartacaktır.

Önce OpenCV'yi kurmamız gerekecek.

pip install opencv-python

İşte eşikleme için kod.

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’)

Çıktı böyle görünüyor.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Metin Algılama

Metin algılama için adlı açık kaynaklı bir kitaplık kullanacağım teserakt. Kesin OCR kitaplığıdır ve 2006'dan beri Google tarafından geliştirilmiştir. Tesseract'ın (v4) en son sürümü, önemli ölçüde daha doğru olan derin öğrenme tabanlı OCR'yi destekler. Temeldeki OCR motorunun kendisi bir Uzun Kısa Süreli Bellek (LSTM) ağı kullanır.

Öncelikle Tesseract'ın en son sürümünü kuralım.

Ubuntu için

sudo apt install tesseract-ocr

MacOS için

brew install tesseract --HEAD

Windows için ikili dosyaları buradan indirebilirsiniz. Kanal

Tesseract sürümünüzü doğrulayın.

tesseract -v

Çıktı -

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 bağlamalarınızı kurun

Artık Tesseract ikili dosyasını yüklediğimize göre, şimdi Tesseract + Python bağlamalarını kurmamız gerekiyor, böylece Python komut dosyalarımız Tesseract ile iletişim kurabilir. Makbuz almanca olduğu için almanca dil paketini de yüklememiz gerekiyor.

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

Artık Tesseract'ı yüklediğimize göre, metin kutularını algılamaya başlayalım.teserakt metin kutularını algılamak için yerleşik işlevselliğe sahiptir.

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')

İşte metin algılama kodunun çıktısı.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Metin tanıma

OCR gerçekleştirmek için Tesseract yapacağız. Tesseract 4, diğer açık kaynak uygulamalarının çoğundan önemli ölçüde daha iyi performans gösteren bir derin öğrenme yaklaşımı kullanır.

İşte metin tanıma kodu. Çok basit bir tek astar olmasına rağmen, kaputun altında kalan çok şey var.

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

İşte ham çıktı.

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

Biçimlendirilmiş çıktı burada

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

Belgeleri, makbuzları veya faturalar ama kodlamak için çok tembel? Başını aşmak Nanonetler ve OCR modellerini ücretsiz oluşturun!


Bilgi Çıkarma

Daha önce de bahsettiğim gibi, bilgi almanın en yaygın yolu kural tabanlı bir yaklaşımdır.

Bu otelden gelen tüm faturalar sabit bir yapıda olacak ve bilgiler farklı satırlarda görünecektir. Bu, satırsonlarının 'n' ile temsil edildiği OCR çıktısında yansıtılır. Bunları kullanarak bilgiyi çıkarmak için bir dizi kural yazalım. Bu kurallar seti, aynı biçime sahip olacağından, bu otelden gelen herhangi bir fişe uygulanabilir.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Basit python komutları ve normal ifadeler kullanarak Restoran adını, işlem tarihini, satın alınan öğeleri, miktarını, öğe başına toplam maliyeti ve toplam tutarı çıkaracağım.

Bu, çıkarılan bilgileri depolayacağım bir sözlük.

receipt _ocr = {}

İlk adım, Restoran adını çıkarmaktır. Restoran adının konumu tüm fişlerde sabit olacak ve bu ilk 2 satırda olacak. Bunu bir kural oluşturmak için kullanalım.

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

Ardından işlem tarihini çıkarıyoruz. Tarih regex oldukça basittir.


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)

Çıktı -

‘30.10.2007’

Daha sonra, öğeler ve maliyetle ilgili tüm bilgileri çıkarıyoruz.

Öğeler, İsviçre Frangı olan bir CHF içerir. Tüm CHF oluşumlarını tespit edelim. Artık 2 n arasındaki ve bir CHF içeren karakterleri tanıyarak satırları tespit edebiliriz. Toplamı burada da tespit ediyorum.

# 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)

Çıktı -

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

Dikkat ederseniz Tesseract, CHF yerine CH tespit ettiği için bir öğeyi kaçırdı. Bir sonraki bölümde geleneksel OCR sistemlerindeki zorlukları ele alacağım.

# 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 çıktımızı yazdırmak -

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

Tüm önemli bilgiler çıkarılmış ve fiş_json'a aktarılmıştır ..

Geleneksel yaklaşımla ilgili sorunlar

Bilgiyi çıkarmış olsak da, yukarıdaki boru hattı birkaç şeyi gözden kaçırıyor ve yetersiz kalıyor. Her yeni makbuz için yeni bir kurallar dizisi yazmamız gerekir ve bu nedenle ölçeklenebilir değildir.

Düzenlerde, yazı tipi ve yazı tipi boyutlarında, el yazısıyla yazılmış belgelerde vb. Birçok değişiklik olabilir. Düzenlerdeki farklılıklar, kurala dayalı yaklaşımları etkileyecektir ve bunların hesaba katılması gerekir ki bu çok sıkıcı hale gelir. Yazı tipi ve yazı tipi boyutlarındaki farklılıklar, bilgilerin tanınmasını ve çıkarılmasını zorlaştırır.

Uçtan uca Derin Öğrenme ardışık düzeni neden daha iyidir?

Standart yaklaşımla ilgili en büyük sorunlardan biri genelleme eksikliğidir. Kural tabanlı yaklaşımlar genelleştirilemez ve herhangi bir yeni şablon için yeni kuralların yazılması gerekir. Ayrıca mevcut bir şablondaki herhangi bir değişiklik veya varyasyonun da hesaba katılması gerekir.

Bir Derin Öğrenme yaklaşımı bu kuralları öğrenebilecek ve eğitim veri setimizde bulundurmamız şartıyla farklı düzenler arasında kolaylıkla genelleme yapabilecektir.

Derin Öğrenme ve Bilgi Çıkarma

Burada uçtan uca Derin Öğrenme yaklaşımlarını kullanan birkaç makaleyi gözden geçiriyorum.

tatlı

CUTIE: Evrişimli Evrensel Metin Bilgi Ayıklayıcısı ile Belgeleri Anlamayı Öğrenme

Bu makale öneriyor Sınırlı insan kaynağı gereksinimi olan öğrenmeye dayalı bir anahtar bilgi çıkarma yöntemi. Belgelerdeki metinlerin hem anlamsal anlamından hem de uzamsal dağılımından gelen bilgileri birleştirir. Önerilen modelleri olan Convolutional Universal Text Information Extractor (CUTIE), metinlerin semantik çağrışımlara sahip özellikler olarak gömülü olduğu ızgaralı metinlere evrişimli sinir ağları uygular.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Önerilen model, temel bilgi çıkarma problemini şu şekilde çözer:

  • İlk önce önerilen metinler ile ızgaralı metinler oluşturma ızgara konumsal haritalama yöntemi. Evrişimli sinir ağı için ızgara verilerini oluşturmak üzere taranan belge görüntüsü, metinleri ve bunların mutlak / göreceli konumlarını elde etmek için bir OCR motoru tarafından işlenir. Metinler, orijinal taranmış belge görüntüsünden hedef ızgaraya eşlenir, öyle ki eşlenmiş ızgara metinler arasındaki orijinal uzamsal ilişkiyi korur, ancak evrişimsel sinir ağı için girdi olarak kullanılmaya daha uygundur.
  • Daha sonra CUTIE modeli ızgaralı metinlere uygulanır. Zengin anlamsal bilgi, bir kelime gömme katmanı ile evrişimli sinir ağının en başındaki ızgaralı metinlerden kodlanır.

CUTIE, taranan belge görüntüsündeki metinlerin hem anlamsal bilgilerine hem de uzamsal bilgilerine aynı anda bakılmasına izin verir ve önemli bilgilerin çıkarılması için yeni bir son teknoloji sonuca ulaşabilir.

CUTIE Modeli

CUTIE-A ve CUTIE-B olmak üzere 2 modeli vardır. önerilen CUTIE-A, yüksek çözünürlük özelliklerini kaybetmeden çoklu çözünürlük özelliklerini birleştiren yüksek kapasiteli bir evrişimli sinir ağıdır. CUTIE-B, görüş alanını genişletmek için atrous evrişimli ve çok ölçekli bağlamları yakalamak için Atrous Spatial Pyramid Pooling (ASPP) modülüne sahip evrişimli bir ağdır. Hem CUTIE-A hem de CUITE-B, başlangıç ​​aşamasında bir kelime gömme katmanı ile anlamsal anlam kodlama sürecini yürütür.

CUTIE'nin görevi, anlamsal bölümleme görevine benzerlik taşır. Eşlenen ızgara, piksellerle yayılan görüntülerin aksine dağınık veri noktaları (metin simgeleri) içerir. Izgara konumsal eşlemeli anahtar metinler, farklı belge düzenleri nedeniyle birbirine yakın veya uzaktır. Bu nedenle, çok ölçekli bağlam işleme yeteneğinin dahil edilmesi ağa fayda sağlar.

Veri kümesi

Önerilen yöntem, SROIE veri kümesinde ICDAR 2019 sağlam okuma zorluğu üzerinde değerlendirilir ve ayrıca 3 tür taranmış belge görüntüsü içeren kendi kendine oluşturulmuş bir veri kümesinde bulunur.

The ICDAR 2019 SROIE veri seti 1000 taranmış fiş görüntüsünü içeren kullanılır. Her bir giriş görüntüsü, mal adı, birim fiyatı, tarihi ve toplam maliyet gibi yaklaşık dört anahtar metin alanı içerir. Veri kümesinde açıklama eklenen metin esas olarak rakamlardan ve İngilizce karakterlerden oluşur.

Kendi kendine oluşturulmuş veri seti, 4 farklı anahtar bilgi sınıfıyla birlikte taksi makbuzları, yemek eğlence (ME) makbuzları ve otel makbuzları dahil olmak üzere 484, 9 açıklamalı taranmış İspanyolca makbuz belgelerini içerir.

Sonuçlar

Genel performans, ortalama hassasiyet (AP - ve 9 sınıfta sınıf başına doğruluk açısından ölçülür) ve pozitif temel doğrular ise önemli bir bilgi sınıfının tahmininin doğru olarak belirlendiği yumuşak ortalama hassasiyet (softAP) kullanılarak değerlendirilir. Son tahmine bazı yanlış pozitifler dahil edilse bile doğru tahmin edilir. AP ve softAP'nin ortak analizi, model performansının daha iyi anlaşılmasını sağlar.

Sonuçları aşağıdaki tablodan görebilirsiniz.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

VRD'ler için GCN'ler

Görsel Açıdan Zengin Belgelerden Çok Modlu Bilgi Çıkarma için Grafik Evrişimi

Bu makale, Görsel Açıdan Zengin belgelerde (VRD'ler) sunulan metinsel ve görsel bilgileri birleştirmek için grafik evrişime dayalı bir model sunar. Grafik yerleştirmeleri, belgedeki bir metin segmentinin bağlamını özetlemek için eğitilir ve ayrıca varlık çıkarma için metin yerleştirmeleriyle birleştirilir.

Bu yazıda bir belgeye VRD diyorlar ve ben ona bağlı kalacağım.

Her belge, her bir metin parçası parçanın konumundan ve içindeki metinden oluştuğu metin bölümlerinin bir grafiği olarak modellenmiştir. Grafik, metin bölümlerini temsil eden düğümlerden ve iki düğüm arasındaki göreli şekiller ve mesafe gibi görsel bağımlılıkları temsil eden kenarlardan oluşur.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Grafik evrişim ile üretilen grafik yerleştirmeleri, belgedeki bir metin parçasının bağlamını özetler ve bunlar ayrıca standart bir BiLSTM-CRF modeli kullanılarak varlık çıkarma için metin yerleştirmeleriyle birleştirilir.

Model

Model ilk olarak belgedeki her bir metin parçasını birden çok grafik evrişim katmanı kullanarak grafik gömme olarak kodlar. Gömme, görsel ve metinsel bağlamı göz önüne alındığında metin bölümündeki bilgileri temsil eder. Görsel bağlam, belgenin düzeni ve tek tek bölümlerin diğer bölümlere göre konumlandırılmasıdır. Metin bağlamı, genel olarak belgedeki metin bilgilerinin toplamıdır; Model, komşu segmentlerden gelen metinlere daha yüksek ağırlık vermeyi öğrenir. Daha sonra kağıt, grafik yerleştirmelerini metin düğünleriyle birleştirir ve varlık çıkarma için standart bir BiLSTM-CRF modeli uygular.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Veri kümesi

İki gerçek dünya veri kümesi kullanılır. Bunlar Katma Değer Vergisi Faturaları (VATI) ve Uluslararası Satın Alma Makbuzlarıdır (IPR). VATI, kullanıcı tarafından yüklenen 3000 resimden oluşur ve tam olarak 16 varlığa sahiptir. Örnek varlıklar, alıcı / satıcının adları, tarih ve vergi tutarıdır. Faturalar Çince'dir ve ulusal standart fatura olduğu için sabit bir şablonu vardır.

IPR, tam olarak 1500 varlık (Fatura Numarası, Satıcı Adı, Ödeyen Adı ve Toplam Tutar) içeren, İngilizce olarak 4 taranmış alındı ​​belgesinin bir veri setidir. Makbuzlar için 146 şablon bulunmaktadır.

Sonuçlar

F1 puanı, tüm deneylerde modelin performanslarını değerlendirmek için kullanılır. Aşağıdaki tablo, 2 veri kümesine ilişkin sonuçları içermektedir.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Temel I, BiLSTM-CRF'yi her bir metin parçasının ayrı bir cümle olduğu her bir metin bölümüne uygular.

Taban Çizgisi II, etiketleme modelini birleştirilmiş metin bölümlerine uygular.

Daha hızlı RCNN + AED

Makbuz Tanıma için Derin Öğrenme Yaklaşımı

Bu makale, taranmış makbuzları tanımak için derin bir öğrenme yaklaşımı sunar. Tanıma sisteminin iki ana modülü vardır: Bağlantıcı Metin Teklif Ağı'na dayalı metin algılama ve Dikkat tabanlı Kodlayıcı-Kod Çözücüye dayalı metin tanıma. Sistem, algılama ve tanıma görevi için F71.9 puanının% 1'unu elde etti.

Metin algılama

CTPN yapısı, LSTM katmanının eklenmesiyle Daha Hızlı R-CNN'ye benzer. Ağ modeli temel olarak üç bölümden oluşur: VGG16 ile özellik çıkarma, çift yönlü LSTM ve sınırlayıcı kutu regresyonu

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Metin tanıma

AED, metin satırlarını tanımak için kullanılır. AED'nin iki ana modülü vardır: Bir metin görüntüsünden özellikleri çıkarmak için DenseNet ve çıktı metnini tahmin etmek için bir dikkat modeli ile birleştirilmiş bir LSTM.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Veri kümesi

SROIE 2019 veri seti kullanılır. Eğitim verilerini eğitim, doğrulama ve test olmak üzere ikiye ayırdılar ve eğitim makbuzlarının% 80'ini, doğrulama makbuzlarının% 10'unu ve test için geri kalanını rastgele seçtiler. Eğitim için 500 alındı, doğrulama için 63 alındı ​​ve test için 63 alındı.

Sonuçlar

Metin algılama için kağıt, Sıkılığa Duyarlı Birleşim Üzerinden Kesişim (TIoU) kullanır. Metin tanıma için, kağıt F1, Hassasiyet ve Geri Çağırma kullanır.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Tablo I, üç koşulla CTPN'nin sonucunu göstermektedir: orijinal görüntülerde CTPN; ön işleme + CTPN, ön işleme + CTPN + OCR doğrulama. Tablo 2, AED ağının sonuçlarını göstermektedir.

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

Elbette bunu yapmanın daha kolay, daha sezgisel bir yolu var.


sağlam lazım makbuz OCR makbuzlardan veri çıkarmak için? Nanonets'e göz atın makbuz OCR API'si!


Nanonets ile OCR

Güncelleme #1: Az önce yayınladık makbuz OCR önceden eğitilmiş model. https://app.nanonets.com adresine gidin ve test etmeye başlayın!

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

The Nanonets OCR API'sı OCR modellerini kolaylıkla oluşturmanıza olanak tanır. OCR modelinizin doğruluğunu artırmak için resimlerinizi ön işleme veya şablonlar eşleştirme veya kural tabanlı motorlar oluşturma konusunda endişelenmenize gerek yoktur.

Tek bir kod satırı yazmadan, GPU'lar hakkında endişelenmeden veya derin öğrenme modelleriniz için doğru mimarileri bulmadan verilerinizi yükleyebilir, açıklama ekleyebilir, modeli eğitecek ve tarayıcı tabanlı bir kullanıcı arayüzü üzerinden tahminler almak için bekleyecek şekilde ayarlayabilirsiniz. Ayrıca, kendi sisteminizle entegre etmek ve en gelişmiş algoritmalar ve güçlü bir altyapı üzerine kurulu makine öğrenimi destekli uygulamalar oluşturmak için her bir tahminin JSON yanıtlarını alabilirsiniz.

GUI'yi kullanma: https://app.nanonets.com/

Nanonets-OCR API'sını aşağıdaki adımları izleyerek de kullanabilirsiniz:

Adım 1: Repo'yu kopyalayın, bağımlılıkları yükleyin

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

2. Adım: Ücretsiz API Anahtarınızı edinin
Ücretsiz API Anahtarınızı şuradan alın: http://app.nanonets.com/#/keys

OCR ve Derin Öğrenme ile Makbuz Dijitalleştirmesini Otomatikleştirme

3. Adım: API anahtarını Ortam Değişkeni olarak ayarlayın

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

4. Adım: Yeni Model Oluşturun

python ./code/create-model.py

Not: Bu, bir sonraki adım için ihtiyacınız olan bir MODEL_ID değeri oluşturur

5. Adım: Model Kimliğini Ortam Değişkeni olarak ekleyin

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Not: önceki adımdan YOUR_MODEL_ID alacaksınız

6. Adım: Egzersiz Verilerini Yükleme
Eğitim verileri şurada bulunur: images (resim dosyaları) ve annotations (resim dosyaları için ek açıklamalar)

python ./code/upload-training.py

Adım 7: Tren Modeli
Görüntüler yüklendikten sonra Modeli eğitmeye başlayın

python ./code/train-model.py

8. Adım: Model Durumunu Alın
Modelin eğitilmesi ~ 2 saat sürer. Model eğitildikten sonra bir e-posta alacaksınız. Bu arada modelin durumunu kontrol edersiniz

python ./code/model-state.py

Adım 9: Tahmin Yap
Model eğitildikten sonra. Modeli kullanarak tahminler yapabilirsiniz

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

Daha fazla Okuma

Güncelleme:
‌ OCR ve Derin Öğrenme kullanılarak makbuz sayısallaştırmasının otomatikleştirilmesindeki en son gelişmeler hakkında daha fazla okuma materyali eklendi.

Zaman Damgası:

Den fazla AI ve Makine Öğrenimi