OCR 및 딥 러닝 PlatoBlockchain 데이터 인텔리전스를 사용하여 영수증 디지털화 자동화. 수직 검색. 일체 포함.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

OCR 및 딥 러닝으로 영수증 디지털화 자동화

영수증에서 데이터 추출을 자동화하고 싶으십니까? Nanonets의 사전 교육을 확인하십시오. 영수증 OCR or 나만의 것을 만들어라. 맞춤형 영수증 OCR. 당신은 또한 수 데모 예약 AP 사용 사례에 대해 자세히 알아보세요!


영수증 OCR 또는 영수증 디지털화는 영수증에서 정보를 자동으로 추출하는 문제를 해결합니다. 이 기사에서는 영수증 디지털화의 이론을 다루고 OpenCV를 사용하여 종단 간 파이프라인을 구현하고 정팔 포체. 또한 Deep Learning을 사용하여 영수증 디지털화를 수행하는 몇 가지 중요한 논문을 검토합니다.

영수증 디지털화 란 무엇입니까?

영수증에는 회사 간 거래에 필요한 정보가 포함되어 있으며 대부분은 종이나 PDF 및 종이 / 사본 이미지와 같은 반 구조적 형식으로되어 있습니다. 이 정보를 효과적으로 관리하기 위해 회사는이 문서에 포함 된 관련 정보를 추출하여 저장합니다. 전통적으로 이는 관련 정보를 수동으로 추출하여 노동 집약적이고 고가의 프로세스 인 데이터베이스에 입력함으로써 달성되었습니다.

영수증 디지털화는 영수증에서 정보를 자동으로 추출하는 문제를 해결합니다.

영수증에서 주요 정보를 추출하여 구조화 된 문서로 변환하면 효율적인 보관, 빠른 색인 작성 및 문서 분석과 같은 많은 응용 프로그램 및 서비스를 제공 할 수 있습니다. 그들은 많은 재무, 회계 및 과세 영역에서 문서 집약적 인 프로세스와 사무 자동화를 능률화하는 데 중요한 역할을합니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

강력한 필요 영수증 OCR or 영수증 스캐너 영수증에서 데이터를 추출하려면? 나노넷을 확인하세요 영수증 OCR API!


영수증 디지털화는 누가 유용할까요?

영수증 디지털화가 큰 영향을 줄 수있는 몇 가지 영역은 다음과 같습니다.

채무 및 수취 채권 자동화

계산 채무 (AP) 및 채권 (AR)은 수동으로 비용이 많이 들고 시간이 많이 걸리며 관리자, 고객 및 공급 업체간에 혼란을 초래할 수 있습니다. 디지털화를 통해 기업은 이러한 단점을 제거하고 투명성 향상, 데이터 분석, 운영 자본 향상 및 손쉬운 추적과 같은 더 많은 이점을 얻을 수 있습니다.

공급망 최적화

공급망은 많은 회사의 올바른 기능의 중추입니다. 작업, 정보 흐름 및 제품 흐름을 관리하는 것이 공급 및 생산을 완전히 제어하는 ​​데 중요합니다. 조직이 배송 시간을 충족하고 생산 비용을 통제해야하는 경우에 필수적입니다.

요즘 진정으로 번창하고있는 회사는 디지털화 된 공급망이라는 공통점이 있습니다. 회사의 89 % 디지털 공급망을 통해 국제 공급업체로부터 완벽한 주문을 받아 정시 배송을 보장합니다. 차세대 디지털 공급망 4.0을 구현하는 핵심 요소 중 하나는 데이터 캡처 및 관리를 자동화하는 것이며 이 데이터의 대부분은 영수증 및 송장. 영수증을 수동으로 입력하면 공급망 전체에 병목 현상이 발생하여 불필요한 지연이 발생합니다. 이 영수증 처리가 디지털화되면 시간과 효율성 면에서 상당한 이득을 얻을 수 있습니다.


OCR 문제를 염두에 두고 있습니까? 디지털화하고 싶다 송장, PDF 또는 번호판? 로 이동 나노 넷 무료로 OCR 모델을 구축하십시오!


왜 어려운 문제입니까?

영수증은 다양하고 때로는 품질이 낮기 때문에 영수증 디지털화가 어렵습니다. 영수증을 스캔하면 디지털 사본에 여러 가지 아티팩트가 추가됩니다. 이러한 아티팩트는 많은 가독성 문제를 제기합니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

다음은 크랙하기 어려운 문제를 일으키는 몇 가지 목록입니다.

  • 필기체 텍스트
  • 작은 글꼴
  • 시끄러운 이미지
  • 희미한 이미지
  • 카메라 움직임과 흔들림
  • 워터 마킹
  • 주름
  • 희미한 텍스트

전통적인 영수증 디지털화 파이프 라인

이러한 종류의 종단 간 접근 방식을위한 일반적인 파이프 라인은 다음과 같습니다.

  • 전처리
  • 광학 문자 인식
  • 정보 추출
  • 데이터 덤프
OCR 및 딥 러닝으로 영수증 디지털화 자동화

파이프 라인의 각 부분을 자세히 살펴 보겠습니다. 프로세스의 첫 번째 단계는 전처리입니다.

전처리

대부분의 스캔 영수증에는 소음이 많고 가공물이 있으므로 OCR 및 정보 추출 시스템이 제대로 작동하려면 영수증을 사전 처리해야합니다. 일반적인 전처리 방법에는 Greyscaling, Thresholding (Binarization) 및 Noise 제거가 있습니다.

그레이 스케일링은 단순히 RGB 이미지를 그레이 스케일 이미지로 변환하는 것입니다.

소음 제거에는 일반적으로 소금과 후추 소음 또는 가우시안 소음 제거가 포함됩니다.

대부분의 OCR 엔진은 흑백 이미지에서 잘 작동합니다. 이는 제공된 임계 값에 대한 픽셀 값의 할당 인 임계 값에 의해 달성 될 수 있습니다. 각 픽셀 값은 임계 값과 비교됩니다. 픽셀 값이 임계 값보다 작 으면 0으로 설정되고 그렇지 않으면 최대 값 (일반적으로 255)으로 설정됩니다.

OpenCV는 다양한 임계값 옵션을 제공합니다 – 단순 임계값, 적응형 임계값

OCR 및 딥 러닝으로 영수증 디지털화 자동화

광학 문자 인식

파이프 라인의 다음 단계는 OCR. 스캔 한 문서 또는 사진과 같은 이미지에서 텍스트를 읽는 데 사용됩니다. 이 기술은 필기 텍스트 (타이핑, 필기 또는 인쇄)를 포함하는 거의 모든 종류의 이미지를 기계가 읽을 수있는 텍스트 데이터로 변환하는 데 사용됩니다.. OCR은 텍스트 감지와 텍스트 인식의 두 단계로 구성됩니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

OCR에는 여러 가지 접근 방식이 있습니다. 일반적인 컴퓨터 비전 접근 방식은

  • 필터를 사용하여 배경에서 문자 분리
  • 필터링 된 문자를 인식하기 위해 윤곽 감지 적용
  • 마법사 분류를 사용하여 캐릭터 식별

필터와 이미지 분류를 적용하는 것은 매우 간단하지만 (SVN을 사용한 MNIST 분류를 생각하십시오) 등고선 일치는 매우 어려운 문제이며 많은 수동 노력이 필요하며 일반화 할 수 없습니다.

다음은 딥 러닝 접근 방식입니다. 딥 러닝은 매우 잘 일반화됩니다. 텍스트 감지에 가장 많이 사용되는 접근 방식 중 하나는 EAST입니다. EAST (효율적이고 정확한 장면 텍스트 감지기)는 텍스트 감지를위한 간단하면서도 강력한 접근 방식입니다. EAST 네트워크는 실제로 잘 알려진 U-Net의 버전으로, 다양한 크기의 기능을 감지하는 데 좋습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

CRNNSTN-OCR (Spatial Transformer Networks)는 OCR을 수행하는 다른 인기있는 논문입니다.

정보 추출

정보 추출 문제에 대한 가장 일반적인 접근 방식은 규칙 기반이며, 필요한 정보를 추출하기 위해 OCR 이후 규칙이 작성됩니다. 이 방법은 강력하고 정확한 방법이지만 새 유형의 문서에 대한 새 규칙 또는 템플릿을 작성해야합니다.

여러 규칙 기반 송장 분석 시스템은 문헌에 존재합니다.

  • DocuWare의 Intellix 관련 필드로 주석이 달린 템플릿이 필요합니다.
  • 스마트픽스 각 템플릿에 대해 특별히 설계된 구성 규칙을 사용합니다.

규칙 기반 방법은 사전 정의 된 템플릿 규칙에 크게 의존하여 특정 송장 레이아웃에서 정보를 추출합니다.

지난 몇 년 동안 매우 일반적이 된 한 가지 접근 방식은 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 라이브러리이며 2006 년부터 Google이 개발했습니다. 최신 버전의 Tesseract (v4)는 훨씬 정확한 딥 러닝 기반 OCR을 지원합니다. 기본 OCR 엔진 자체는 LSTM (Long Short-Term Memory) 네트워크를 사용합니다.

먼저 최신 버전의 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 바이너리가 설치되었으므로 이제 Python 스크립트가 Tesseract와 통신 할 수 있도록 Tesseract + Python 바인딩을 설치해야합니다. 영수증이 독일어로되어 있으므로 독일어 팩을 설치해야합니다.

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 모델을 구축하십시오!


정보 추출

앞에서 언급 한 것처럼 정보를 추출하는 가장 일반적인 방법은 규칙 기반 접근 방식입니다.

이 호텔의 모든 영수증은 고정 된 구조를 따르며 정보는 다른 줄에 나타납니다. 이것은 개행이 'n'으로 표시되는 OCR 출력에 반영됩니다. 이를 사용하여 정보를 추출하는 규칙 세트를 작성해 봅시다. 이 규칙은 동일한 형식을 따르므로이 호텔의 영수증에 적용될 수 있습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

간단한 파이썬 명령과 정규 표현식을 사용하여 식당 이름, 거래 날짜, 구매 한 품목, 수량, 품목 당 총 비용 및 총액을 추출합니다.

추출 된 정보를 저장할 사전입니다.

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의 모든 발생을 감지합시다. 이제 2n 사이의 문자를 인식하고 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를 감지하여 하나의 항목을 놓쳤습니다. 다음 섹션에서는 기존 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'}

모든 주요 정보가 추출되어 reception_json에 덤프되었습니다.

기존 접근 방식의 문제점

우리가 정보를 추출했지만 위의 파이프 라인은 몇 가지 사항을 놓치고 하위 최적입니다. 새로운 영수증마다 새로운 규칙 세트를 작성해야하므로 확장 할 수 없습니다.

레이아웃, 글꼴 및 글꼴 크기, 필기 문서 등에는 많은 변형이있을 수 있습니다. 레이아웃의 차이는 규칙 기반 접근 방식에 영향을 미치며 이러한 점을 고려해야하며 이는 매우 지루합니다. 글꼴 및 글꼴 크기의 차이로 인해 정보를 인식하고 추출하기가 어렵습니다.

엔드 투 엔드 딥 러닝 파이프 라인이 더 나은 이유는 무엇입니까?

표준 접근 방식의 가장 큰 문제 중 하나는 일반화가 없다는 것입니다. 규칙 기반 접근 방식은 일반화 할 수 없으며 새 템플릿에 대해 새 규칙을 작성해야합니다. 또한 기존 템플릿의 변경 사항이나 변형도 고려해야합니다.

딥 러닝 접근 방식은 이러한 규칙을 학습 할 수 있으며 교육 데이터 세트에 규칙이있는 경우 다양한 레이아웃에서 쉽게 일반화 할 수 있습니다.

딥 러닝 및 정보 추출

여기에서는 종단 간 딥 러닝 접근법을 사용하는 몇 가지 논문을 검토합니다..

큐티

CUTIE : Convolutional Universal Text Information Extractor를 사용한 문서 이해 학습

이 논문은 제안한다 인적 자원이 제한된 학습 기반 키 정보 추출 방법. 그것은 의미 적 의미와 문서에서 텍스트의 공간 분포에 관한 정보를 결합합니다. 제안 된 모델 인 CUTIE (Convolutional Universal Text Information Extractor)는 텍스트가 의미 적 의미가있는 피처로 포함 된 그리드 텍스트에 컨볼 루션 신경망을 적용합니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

제안 된 모델, 주요 정보 추출 문제를 해결

  • 제안 된 텍스트로 그리드 텍스트 만들기 그리드 위치 매핑 방법. 컨 벌루 셔널 뉴럴 네트워크에 대한 그리드 데이터를 생성하기 위해, 스캔 된 문서 이미지는 텍스트 및 그들의 절대 / 상대적 위치를 획득하기 위해 OCR 엔진에 의해 처리된다. 텍스트는 원본 스캔 된 문서 이미지에서 대상 그리드로 매핑되므로 매핑 된 그리드는 텍스트 사이의 원래 공간 관계를 유지하지만 컨볼 루션 신경망의 입력으로 사용하기에 더 적합합니다.
  • 그런 다음 CUTIE 모델이 격자 문자에 적용됩니다. 풍부한 의미 론적 정보는 컨볼 루션 신경망의 맨 처음 단계에서 단어 임베딩 레이어로 그리드 텍스트에서 인코딩됩니다.

CUTIE를 사용하면 스캔 한 문서 이미지에서 텍스트의 의미 정보와 공간 정보를 동시에 조사 할 수 있으며 주요 정보 추출을위한 새로운 최신 결과에 도달 할 수 있습니다.

큐티 모델

CUTIE-A와 CUTIE-B의 2 가지 모델이 있습니다. 제안 된 CUTIE-A는 고해상도 기능을 잃지 않고 다중 해상도 기능을 통합하는 고용량 컨볼 루션 신경망입니다. CUTIE-B는 시야를 확대하고 ASPP (Atrous Spatial Pyramid Pooling) 모듈을 확대하기위한 강력한 컨볼 루션을 갖춘 컨볼 루션 네트워크입니다. CUTIE-A와 CUITE-B는 맨 처음 단계에서 워드 임베드 레이어를 사용하여 의미 적 의미 인코딩 프로세스를 수행합니다.

CUTIE의 작업은 의미 론적 분할 작업과 유사합니다. 매핑 된 그리드에는 픽셀이 퍼져있는 이미지와 달리 흩어진 데이터 포인트 (텍스트 토큰)가 포함됩니다. 그리드 위치 매핑 된 키 텍스트는 서로 다른 유형의 문서 레이아웃으로 인해 서로 가깝거나 먼 곳에 있습니다. 따라서 다중 규모 컨텍스트 처리 기능을 통합하면 네트워크에 도움이됩니다.

데이터 세트

제안 된 방법은 SROIE 데이터 세트에 대한 ICDAR 2019 강력한 판독 문제에 대해 평가되며 3 가지 유형의 스캔 문서 이미지가있는 자체 구축 데이터 세트에도 적용됩니다.

XNUMXD덴탈의 ICDAR 2019 SROIE 데이터 세트 1000 개의 전체 스캔 된 영수증 이미지를 포함하는 사용됩니다. 각 영수증 이미지에는 상품 이름, 단가, 날짜 및 총 비용과 같은 약 XNUMX 개의 주요 텍스트 필드가 포함되어 있습니다. 데이터 세트에 주석이 달린 텍스트는 주로 숫자와 영어 문자로 구성됩니다.

자체 구축 데이터 세트에는 택시 영수증, 식사 엔터테인먼트 (ME) 영수증 및 호텔 영수증을 포함하여 4 개의 주석이 달린 스캔 된 스페인 영수증 문서가 있으며 484 가지 주요 정보 클래스가 있습니다.

결과

전체 성능은 평균 정밀도 (AP – 9 개 클래스에 대한 클래스 별 정확도 측면에서 측정 됨) 및 소프트 평균 정밀도 (softAP)를 사용하여 평가됩니다. 여기서 핵심 정보 클래스의 예측이 긍정적 인 사실 일 경우 올바른 것으로 결정됩니다. 일부 오 탐지가 최종 예측에 포함 되더라도 정확하게 예측됩니다. AP와 softAP의 공동 분석은 모델 성능에 대한 더 나은 이해를 제공합니다.

아래 표에서 결과를 볼 수 있습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

VRD 용 GCN

시각적으로 풍부한 문서에서 멀티 모달 정보 추출을위한 그래프 컨벌루션

이 백서는 VRD (Visually Rich Documents)에 표시되는 텍스트 및 시각적 정보를 결합하는 그래프 컨벌루션 기반 모델을 소개합니다. 그래프 임베딩은 문서에서 텍스트 세그먼트의 컨텍스트를 요약하도록 학습되며 엔티티 추출을 위해 텍스트 임베딩과 결합됩니다.

이 논문에서 그들은 문서를 VRD라고 부릅니다.

각 문서는 텍스트 세그먼트의 그래프로 모델링되며 각 텍스트 세그먼트는 세그먼트의 위치와 그 안의 텍스트로 구성됩니다. 그래프는 텍스트 세그먼트를 나타내는 노드와 두 노드 사이의 상대적인 모양 및 거리와 같은 시각적 종속성을 나타내는 가장자리로 구성됩니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

그래프 컨벌루션으로 생성 된 그래프 임베딩은 문서에서 텍스트 세그먼트의 컨텍스트를 요약하며 표준 BiLSTM-CRF 모델을 사용하여 엔티티 추출을위한 텍스트 임베딩과 결합됩니다.

모델

모델은 먼저 여러 레이어의 그래프 컨벌루션을 사용하여 문서의 각 텍스트 세그먼트를 그래프 임베딩으로 인코딩합니다. 임베딩은 시각적 및 텍스트 적 맥락에서 텍스트 세그먼트의 정보를 나타냅니다. 시각적 컨텍스트는 문서의 레이아웃과 개별 세그먼트의 다른 위치에 대한 상대적 위치입니다. 텍스트 컨텍스트는 문서 전체의 텍스트 정보의 집합입니다. 이 모델은 인접 세그먼트의 텍스트에 더 높은 가중치를 할당하는 방법을 배웁니다. 그런 다음이 논문은 그래프 임베딩을 텍스트 임베딩과 결합하고 엔티티 추출을 위해 표준 BiLSTM-CRF 모델을 적용합니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

데이터 세트

두 개의 실제 데이터 세트가 사용됩니다. VATI (Value-Added Tax Invoice) 및 IPR (International Purchase Receipts)입니다. VATI는 사용자가 업로드 한 3000 개의 사진으로 구성되며 정확히 16 개의 개체를 갖습니다. 예제 엔티티는 구매자 / 판매자 이름, 날짜 및 세금 금액입니다. 인보이스는 중국어로되어 있으며 국가 표준 인보이스이므로 고정 템플릿이 있습니다.

IPR은 정확히 1500 개의 엔티티 (송장 번호, 공급 업체 이름, 지불 인 이름 및 총액)가있는 4 개의 스캔 영수증 문서 데이터 세트입니다. 영수증에 대한 146 개의 템플릿이 있습니다.

결과

F1 점수는 모든 실험에서 모델의 성능을 평가하는 데 사용됩니다. 아래 표에는 thr 2 데이터 세트에 대한 결과가 있습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

베이스 라인 I은 BiLSTM-CRF를 각 텍스트 세그먼트에 적용합니다. 여기서 각 텍스트 세그먼트는 개별 문장입니다.

Baseline II는 태깅 모델을 연결된 텍스트 세그먼트에 적용합니다.

더 빠른 RCNN + AED

영수증 인식을위한 딥 러닝 접근법

이 논문은 스캔 된 영수증을 인식하기위한 딥 러닝 접근법을 제시합니다. 인식 시스템에는 Connectionist Text Proposal Network를 기반으로하는 텍스트 감지와 Attention-based Encoder-Decoder를 기반으로하는 텍스트 인식의 두 가지 주요 모듈이 있습니다. 이 시스템은 탐지 및 인식 작업에서 F71.9 점수의 1 %를 달성했습니다.

텍스트 감지

CTPN 구조는 LSTM 계층이 추가 된 Faster R-CNN과 유사합니다. 네트워크 모델은 주로 VGG16에 의한 특징 추출, 양방향 LSTM 및 바운딩 박스 회귀의 세 부분으로 구성됩니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

텍스트 인식

AED는 텍스트 라인을 인식하는 데 사용됩니다. AED에는 텍스트 이미지에서 기능을 추출하기위한 DenseNet과 출력 텍스트 예측을위한주의 모델과 결합 된 LSTM의 두 가지 주요 모듈이 있습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

데이터 세트

SROIE 2019의 데이터 세트가 사용됩니다. 그들은 훈련 데이터를 훈련, 검증 및 테스트로 나누고 훈련을위한 영수증의 80 %, 검증을위한 영수증의 10 %, 나머지는 시험을 위해 무작위로 선택했습니다. 교육용 영수증 500 개, 검증 용 영수증 63 개, 테스트 용 63 개 결과.

결과

텍스트 감지를 위해이 종이는 TIoU (Tightness-aware Intersection-over-Union)를 사용합니다. 텍스트 인식을 위해이 종이는 F1, Precision 및 Recall을 사용했습니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

표 2은 세 가지 조건에서 CTPN의 결과를 보여줍니다. 원본 이미지의 CTPN; 전처리 + CTPN, 전처리 + CTPN + OCR 확인. 표 XNUMX는 AED 네트워크의 결과를 보여줍니다.

OCR 및 딥 러닝으로 영수증 디지털화 자동화

물론 더 쉽고 직관적인 방법이 있습니다.


강력한 필요 영수증 OCR 영수증에서 데이터를 추출하려면? 나노넷을 확인하세요 영수증 OCR API!


나노 넷을 사용한 OCR

업데이트 #1: 우리는 우리의 영수증 OCR 사전 훈련된 모델 https://app.nanonets.com으로 이동하여 테스트를 시작하세요!

OCR 및 딥 러닝으로 영수증 디지털화 자동화

XNUMXD덴탈의 나노 넷 OCR API OCR 모델을 쉽게 만들 수 있습니다. OCR 모델의 정확성을 높이기 위해 이미지 전처리에 대해 걱정하거나 템플릿 일치 또는 규칙 기반 엔진 구축에 대해 걱정할 필요가 없습니다.

데이터를 업로드하고 주석을 달며 모델을 설정하여 한 줄의 코드를 작성하거나 GPU에 대해 걱정하거나 딥 러닝 모델에 적합한 아키텍처를 찾지 않고도 브라우저 기반 UI를 통해 예측을 기다릴 수 있습니다. 또한 각 예측의 JSON 응답을 획득하여 자체 시스템과 통합하고 최신 알고리즘과 강력한 인프라를 기반으로 구축 된 머신 러닝 기반 앱을 구축 할 수 있습니다.

GUI 사용 : 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 단계 : 환경 변수로 모델 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 및 머신 러닝