OCR とディープラーニング PlatoBlockchain データ インテリジェンスによるレシートのデジタル化の自動化。垂直検索。あい。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

OCRとディープラーニングを使用した領収書のデジタル化の自動化

領収書からのデータ抽出を自動化したいですか? Nanonets の事前トレーニングを確認してください OCRを受け取る or あなた自身のものをつくる カスタマイズされたレシート OCR。あなたもすることができます デモを予約する APのユースケースの詳細をご覧ください。


OCRを受け取る または、レシートのデジタル化は、レシートから情報を自動的に抽出するという課題に対処します。この記事では、レシートのデジタル化の背後にある理論を説明し、OpenCV を使用してエンドツーエンドのパイプラインを実装します。 Tesseract。また、深層学習を使用してレシートのデジタル化を行ういくつかの重要な論文もレビューします。

領収書のデジタル化とは何ですか?

領収書には、企業間で取引を行うために必要な情報が含まれており、その多くは紙面、またはPDFや紙/ハードコピーの画像などの半構造化された形式です。 この情報を効果的に管理するために、企業はこれらのドキュメントに含まれる関連情報を抽出して保存します。 従来、これは手動で関連情​​報を抽出し、それをデータベースに入力することで達成されていましたが、これは労働集約的で費用のかかるプロセスです。

領収書のデジタル化は、領収書から情報を自動的に抽出するという課題に対処します。

領収書から重要な情報を抽出し、それらを構造化文書に変換することで、効率的なアーカイブ、高速な索引付け、文書分析など、多くのアプリケーションとサービスに対応できます。 それらは、多くの財務、会計、課税分野でのドキュメント集約型プロセスとオフィス自動化の合理化に重要な役割を果たします。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

堅牢なものが必要 レシートOCR or レシートスキャナー 領収書からデータを抽出するには?ナノネットをチェックしてみよう レシートOCR API!


レシートのデジタル化は誰にとって便利でしょうか?

領収書のデジタル化が大きな影響を与える可能性があるいくつかの領域を次に示します。

買掛金および売掛金の自動化

買掛金(AP)と売掛金(AR)を手動で計算すると、コストと時間がかかり、マネージャー、顧客、ベンダーの間で混乱が生じる可能性があります。 デジタル化により、企業はこれらの欠点を排除し、より多くの利点(透明性の向上、データ分析、運転資本の改善、追跡の容易化)を実現できます。

サプライチェーンの最適化

サプライチェーンは、多くの企業が適切に機能するためのバックボーンです。 タスク、情報フロー、製品フローの管理は、供給と生産を完全に制御するための鍵です。 これは、組織が納期に対応し、生産コストを管理する場合に不可欠です。

最近真に繁栄している企業には、デジタル化されたサプライチェーンという重要な共通点があります。 89%の企業 デジタル サプライ チェーンを利用することで、国際的なサプライヤーから完璧な注文を受け取り、納期を確実に守ることができます。次世代のデジタル サプライ チェーン 4.0 を実現するための重要な要素の XNUMX つは、データのキャプチャと管理の自動化であり、このデータの多くは領収書や領収書の形式です。 請求書。領収書を手動で入力すると、サプライ チェーン全体でボトルネックとなり、不必要な遅延が発生します。この領収書処理がデジタル化されれば、時間と効率が大幅に向上します。


OCRの問題を念頭に置いていますか? デジタル化したい 請求書、PDFまたはナンバープレート? に向かいます ナノネット 無料でOCRモデルを作成してください!


なぜそれが難しい問題なのですか?

領収書にはバリエーションが多く、品質が低い場合があるため、領収書のデジタル化は困難です。 レシートをスキャンすると、デジタルコピーにいくつかのアーティファクトが発生します。 これらのアーティファクトは、多くの読みやすさの課題をもたらします。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

これは、解読するのが難しい問題を引き起こすいくつかのことのリストです

  • 手書きのテキスト
  • 小さいフォント
  • ノイズの多い画像
  • 色あせた画像
  • カメラの動きと揺れ
  • 透かし
  • シワ
  • 色あせたテキスト

従来の領収書デジタル化パイプライン

この種のエンドツーエンドアプローチの一般的なパイプラインには、次のものが含まれます。

  • 前処理
  • 光学式文字認識
  • 情報抽出
  • データダンプ
OCRとディープラーニングを使用した領収書のデジタル化の自動化

パイプラインの各部分について詳しく見ていきましょう。 プロセスの最初のステップは前処理です。

前処理

スキャンされたレシートのほとんどはノイズが多く、アーティファクトがあるため、OCRと情報抽出システムが適切に機能するには、レシートを前処理する必要があります。 一般的な前処理方法は次のとおりです。–グレイスケーリング、しきい値処理(XNUMX値化)、ノイズ除去。

グレースケーリングは、RGB画像をグレースケール画像に変換するだけです。

ノイズ除去には、通常、ソルトアンドペッパーノイズまたはガウスノイズの除去が含まれます。

ほとんどのOCRエンジンは、白黒画像でうまく機能します。 これは、提供されたしきい値に関連するピクセル値の割り当てであるしきい値処理によって実現できます。 各ピクセル値はしきい値と比較されます。 ピクセル値がしきい値よりも小さい場合は0に設定され、それ以外の場合は最大値(通常は255)に設定されます。

OpenCV は、単純なしきい値、適応しきい値など、さまざまなしきい値処理オプションを提供します。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

光学式文字認識

パイプラインの次のステップは OCR。 スキャンされたドキュメントや画像などの画像からテキストを読み取るために使用されます。 このテクノロジーは、書かれたテキスト(入力、手書き、または印刷)を含むほぼすべての種類の画像を機械可読のテキストデータに変換するために使用されます。. OCRには、テキスト検出とテキスト認識の2つのステップが含まれます。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

OCRには多くのアプローチがあります。 従来のコンピュータービジョンアプローチは

  • フィルターを使用して文字を背景から分離する
  • 輪郭検出を適用して、フィルタリングされた文字を認識します
  • メイジ分類を使用してキャラクターを識別する

フィルターと画像分類の適用は非常に簡単です(SVNを使用したMNIST分類と考えてください)。

次は、ディープラーニングのアプローチです。 ディープラーニングは非常によく一般化されます。 テキスト検出の最も一般的なアプローチのXNUMXつはEASTです。 EAST(効率的で正確なシーンテキスト検出器)は、テキスト検出のためのシンプルでありながら強力なアプローチです。 EASTネットワークは、実際にはよく知られているU-Netのバージョンであり、さまざまなサイズのフィーチャを検出するのに適しています。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

CRNN & STN-OCR (Spatial Transformer Networks)は、OCRを実行する他の一般的な論文です。

情報抽出

情報抽出の問題に対する最も一般的なアプローチはルールベースであり、OCRの後にルールが記述され、必要な情報が抽出されます。 これは強力で正確なアプローチですが、新しいタイプのドキュメント用の新しいルールまたはテンプレートを作成する必要があります。

いくつかのルールベース 請求書 分析システムは文献に存在します。

ルールベースの方法は、事前定義されたテンプレートルールに大きく依存して、特定の請求書レイアウトから情報を抽出します

過去数年間で非常に一般的になっているアプローチのXNUMXつは、YOLO、FasterR-CNNなどの標準のオブジェクト検出フレームワークを使用してフィールドを認識することです。 したがって、純粋なテキスト検出の代わりに、フィールド認識とテキスト検出が同時に実行されます。 これにより、パイプラインが小さくなります(テキスト検出→認識→抽出から検出→認識)。 オブジェクト検出器はこれらのフィールドを認識することを学習するため、ルールを記述する必要はありません。

データダンプ

情報を抽出したら、私たちのユースケースで必要なデータダンプを実行できます。 多くの場合、フィールド情報を格納するJSON形式が便利です。 これらのJSONファイルは、誰がどのようにデータを操作したいかに応じて、XMLファイル、Excelシート、CSVファイル、またはプレーンテキストファイルに簡単に変換できます。

を使用したレシート電子化 Tesseract

パイプラインの概念がわかったところで、レシートの例にそれを実装しましょう. これは私たちが扱うレシートです。 この最後の目標は、レストラン名、購入されたアイテムの数量とコスト、購入日、および合計を抽出することです。

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とディープラーニングを使用した領収書のデジタル化の自動化

テキスト検出

テキストの検出には、オープンソースライブラリを使用します。 Tesseract。 これは決定的なOCRライブラリであり、2006年以降Googleによって開発されました。Tesseract(v4)の最新リリースは、大幅に正確な深層学習ベースのOCRをサポートしています。 基礎となるOCRエンジン自体は、Long Short-Term Memory(LSTM)ネットワークを利用します。

まず、Tesseractの最新バージョンをインストールしましょう。

Ubuntuの場合

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バイナリがインストールされたので、PythonスクリプトがTesseractと通信できるように、Tesseract + Pythonバインディングをインストールする必要があります。 領収書がドイツ語であるため、ドイツ語の言語パックもインストールする必要があります。

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

Tesseract をインストールしたので、テキスト ボックスの検出を開始しましょう。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モデルを作成してください!


情報抽出

前に述べたように、情報を抽出する最も一般的な方法は、ルールベースのアプローチによるものです。

このホテルからのすべての領収書は固定された構造に従い、情報は別の行に表示されます。 これは、改行が「n」で表されるOCR出力に反映されます。 これらを使用して、情報を抽出するための一連のルールを記述しましょう。 これらのルールは同じ形式に従うため、このホテルのレシートに適用できます。

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が含まれています。 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はCHFではなくCHを検出したため、XNUMXつのアイテムを逃しました。 次のセクションでは、従来の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にダンプされました。

従来のアプローチの問題

情報を抽出しましたが、上記のパイプラインはいくつかの点を逃しており、最適ではありません。 新しい領収書ごとに新しい一連のルールを作成する必要があるため、スケーラブルではありません。

レイアウト、フォントとフォントサイズ、手書きのドキュメントなど、さまざまなバリエーションが考えられます。 レイアウトの違いはルールベースのアプローチに影響し、これらを考慮する必要があり、非常に退屈になります。 フォントとフォントサイズの違いにより、情報の認識と抽出が困難になります。

エンドツーエンドの深層学習パイプラインが優れているのはなぜですか?

標準的なアプローチの最大の問題のXNUMXつは、一般化の欠如です。 ルールベースのアプローチは一般化できず、新しいテンプレートには新しいルールを記述する必要があります。 また、既存のテンプレートの変更やバリエーションも考慮する必要があります。

ディープラーニングアプローチでは、これらのルールを学習し、さまざまなレイアウト全体を簡単に一般化できます(トレーニングデータセットにそれらがある場合)。

深層学習と情報抽出

ここでは、エンドツーエンドのディープラーニングアプローチを使用するいくつかの論文をレビューします.

キューティー

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のタスクは、セマンティックセグメンテーションタスクに類似しています。 マップされたグリッドには、ピクセルで分散された画像とは対照的に、散在したデータポイント(テキストトークン)が含まれています。 グリッドの位置がマップされたキーテキストは、ドキュメントレイアウトの種類が異なるため、互いに近いか、離れています。 したがって、マルチスケールのコンテキスト処理機能を組み込むと、ネットワークにメリットがあります。

データセット

提案された方法は、SROIEデータセットに対するICDAR 2019の堅牢な読み取りチャレンジで評価され、3種類のスキャンされたドキュメント画像を含む自己構築データセットでも評価されます。

  ICDAR 2019 SROIEデータセット スキャンされたレシート画像全体を1000枚含むが使用されます。 各レシート画像には、商品名、単価、日付、総コストなど、約XNUMXつの主要なテキストフィールドが含まれています。 データセットで注釈が付けられたテキストは、主に数字と英字で構成されています。

自作のデータセットには、タクシーの領収書、食事のエンターテインメント(ME)の領収書、ホテルの領収書など、4 484の注釈付きのスキャンされたスペイン語の領収書ドキュメントが含まれ、9つの異なる主要情報クラスがあります。

革 新 的 な 最 新 車 両 の 設 計 ・ 開 発 に 焦 点 を 合 わ せ 、 デ ジ タ ル ・ト ラ ン ス フ ォ ー メ ー シ ョ ン を実現する業界最高のエンジニアリングと IT のベストプラクティス

全体的なパフォーマンスは、平均精度(AP –および9つのクラスにわたるクラスごとの精度で測定)とソフト平均精度(softAP)を使用して評価されます。ここで、主要な情報クラスの予測は、正のグラウンドトゥルースの場合に正しいと判断されます。いくつかの誤検知が最終予測に含まれている場合でも、正しく予測されます。 APとsoftAPの共同分析により、モデルのパフォーマンスをより深く理解できます。

結果は下の表で確認できます。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

VRDのGCN

視覚的に豊富なドキュメントからのマルチモーダル情報抽出のためのグラフ畳み込み

このペーパーでは、視覚的に豊富なドキュメント(VRD)で提示されるテキスト情報と視覚情報を組み合わせるグラフ畳み込みベースのモデルを紹介します。 グラフの埋め込みは、ドキュメント内のテキストセグメントのコンテキストを要約するようにトレーニングされ、さらにエンティティ抽出のためにテキストの埋め込みと組み合わされます。

このペーパーでは、彼らはドキュメントをVRDと呼び、私はそれを使い続けます。

各ドキュメントは、テキストセグメントのグラフとしてモデル化されます。各テキストセグメントは、セグメントの位置とセグメント内のテキストで構成されます。 グラフは、テキストセグメントを表すノードと、XNUMXつのノード間の相対的な形状や距離などの視覚的な依存関係を表すエッジで構成されます。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

グラフのたたみ込みによって生成されるグラフの埋め込みは、ドキュメント内のテキストセグメントのコンテキストを要約し、標準のBiLSTM-CRFモデルを使用してエンティティ抽出のためにテキストの埋め込みとさらに結合されます。

モデル

モデルは最初に、ドキュメントの各テキストセグメントを、グラフの畳み込みの複数の層を使用して、グラフの埋め込みにエンコードします。 埋め込みは、視覚的およびテキストのコンテキストが与えられたテキストセグメントの情報を表します。 ビジュアルコンテキストは、ドキュメントのレイアウトと、個々のセグメントと他のセグメントの相対位置です。 テキストコンテキストは、ドキュメント全体のテキスト情報の集合です。 モデルは、隣接するセグメントからのテキストに高い重みを割り当てることを学習します。 次に、グラフの埋め込みとテキストの埋め込みを組み合わせ、エンティティ抽出に標準のBiLSTM-CRFモデルを適用します。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

データセット

3000つの実際のデータセットが使用されます。 それらは付加価値税請求書(VATI)および国際購入領収書(IPR)です。 VATIはユーザーがアップロードした16枚の画像で構成され、正確にはXNUMXのエンティティがあります。 エンティティの例は、購入者/販売者の名前、日付、および税額です。 請求書は中国語であり、国の標準請求書であるため、テンプレートは固定されています。

IPRは、1500のスキャンされた英語の領収書ドキュメントのデータセットで、正確に4つのエンティティ(請求書番号、ベンダー名、支払者名、合計金額)があります。 レシートのテンプレートは146あります。

革 新 的 な 最 新 車 両 の 設 計 ・ 開 発 に 焦 点 を 合 わ せ 、 デ ジ タ ル ・ト ラ ン ス フ ォ ー メ ー シ ョ ン を実現する業界最高のエンジニアリングと IT のベストプラクティス

F1スコアは、すべての実験でモデルのパフォーマンスを評価するために使用されます。 以下の表は、2つのデータセットの結果を示しています。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

ベースラインIはBiLSTM-CRFを各テキストセグメントに適用します。各テキストセグメントは個別の文です。

ベースラインIIは、連結されたテキストセグメントにタグ付けモデルを適用します。

より高速なRCNN + AED

領収書認識のための深層学習アプローチ

このペーパーでは、スキャンされた領収書を認識するためのディープラーニングアプローチを紹介します。 認識システムには71.9つの主要なモジュールがあります。ConnectionistText Proposal Networkに基づくテキスト検出と、アテンションベースのエンコーダーデコーダーに基づくテキスト認識です。 システムは、検出および認識タスクのF1スコアのXNUMX%を達成しました。

テキスト検出

CTPN構造は、LSTM層が追加されている点で、Faster R-CNNに似ています。 ネットワークモデルは主に16つの部分で構成されています:VGGXNUMXによる特徴抽出、双方向LSTM、および境界ボックス回帰

OCRとディープラーニングを使用した領収書のデジタル化の自動化

テキスト認識

AEDはテキスト行を認識するために使用されます。 AEDにはXNUMXつの主要モジュールがあります。テキスト画像から特徴を抽出するDenseNetと、出力テキストを予測するアテンションモデルと組み合わせたLSTMです。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

データセット

SROIE 2019のデータセットが使用されます。 彼らは、トレーニングデータをトレーニング、検証、およびテストに分割し、トレーニング用に80%のレシート、検証用に10%のレシート、残りをテスト用にランダムに選択しました。 結果として、トレーニング用に500レシート、検証用に63レシート、テスト用に63レシートになります。

革 新 的 な 最 新 車 両 の 設 計 ・ 開 発 に 焦 点 を 合 わ せ 、 デ ジ タ ル ・ト ラ ン ス フ ォ ー メ ー シ ョ ン を実現する業界最高のエンジニアリングと IT のベストプラクティス

テキストの検出には、紙はタイトネス対応のユニオン交差(TIoU)を使用します。テキストの認識には、F1、Precision、およびRecallを使用しました。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

表Iは、2つの条件でのCTPNの結果を示しています。 前処理+ CTPN、前処理+ CTPN + OCR検証。 表XNUMXは、AEDネットワークの結果を示しています。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

もちろん、これを行うための、より簡単で直感的な方法があります。


堅牢なものが必要 レシートOCR 領収書からデータを抽出するには?ナノネットをチェックしてみよう レシートOCR API!


Nanonetを使用したOCR

アップデート #1: をリリースしました。 レシートOCR 事前にトレーニングされたモデル。 https://app.nanonets.com にアクセスしてテストを開始してください。

OCRとディープラーニングを使用した領収書のデジタル化の自動化

  ナノネット OCR API OCRモデルを簡単に構築できます。 OCRモデルの精度を上げるために、画像の前処理やテンプレートのマッチング、ルールベースのエンジンの構築について心配する必要はありません。

データをアップロードし、注釈を付け、トレーニングするようにモデルを設定し、XNUMX行のコードを記述したり、GPUを心配したり、ディープラーニングモデルに適したアーキテクチャを見つけたりせずに、ブラウザーベースのUIを介して予測を取得するまで待機できます。 また、各予測のJSON応答を取得して、独自のシステムと統合し、最先端のアルゴリズムと強力なインフラストラクチャに基づいて構築された機械学習対応アプリを構築することもできます。

GUIの使用: https://app.nanonets.com/

以下の手順に従って、Nanonets-OCR APIを使用することもできます。

ステップ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とディープラーニングを使用した領収書のデジタル化の自動化

ステップ3:APIキーを環境変数として設定する

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

ステップ4:新しいモデルを作成する

python ./code/create-model.py

注: これにより、次のステップに必要なMODEL_IDが生成されます

ステップ5:モデルIDを環境変数として追加する

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 とディープラーニングを使用したレシートのデジタル化の自動化における最新の進歩に関する読み物をさらに追加しました。

タイムスタンプ:

より多くの AIと機械学習