Tự động hóa số hóa biên nhận với OCR và Deep Learning PlatoBlockchain Data Intelligence. Tìm kiếm theo chiều dọc. Ai đó.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Bạn muốn tự động hóa việc trích xuất dữ liệu từ biên lai? Kiểm tra Nanonets được đào tạo trước Biên nhận OCR or xây dựng của riêng bạn biên nhận tùy chỉnh OCR. Bạn cũng có thể lên lịch trình demo để tìm hiểu thêm về các trường hợp sử dụng AP của chúng tôi!


Biên nhận OCR hoặc số hóa biên nhận giải quyết thách thức của việc tự động trích xuất thông tin từ biên nhận. Trong bài viết này, tôi đề cập đến lý thuyết đằng sau số hóa biên nhận và triển khai đường dẫn end-to-end bằng OpenCV và Tesseract. Tôi cũng xem xét một số giấy tờ quan trọng thực hiện Số hóa biên nhận bằng cách sử dụng Deep Learning.

Số hóa hóa đơn là gì?

Biên lai mang thông tin cần thiết cho giao dịch xảy ra giữa các công ty và phần lớn là trên giấy hoặc ở các định dạng bán cấu trúc như PDF và hình ảnh của giấy / bản cứng. Để quản lý thông tin này một cách hiệu quả, các công ty trích xuất và lưu trữ thông tin liên quan có trong các tài liệu này. Theo truyền thống, điều này đã đạt được bằng cách trích xuất thủ công các thông tin liên quan và đưa nó vào cơ sở dữ liệu là một quá trình tốn nhiều công sức và tốn kém.

Số hóa biên nhận giải quyết thách thức của việc tự động trích xuất thông tin từ biên nhận.

Trích xuất thông tin chính từ biên lai và chuyển đổi chúng thành tài liệu có cấu trúc có thể phục vụ nhiều ứng dụng và dịch vụ, chẳng hạn như lưu trữ hiệu quả, lập chỉ mục nhanh và phân tích tài liệu. Họ đóng vai trò quan trọng trong việc hợp lý hóa các quy trình chuyên sâu về tài liệu và tự động hóa văn phòng trong nhiều lĩnh vực tài chính, kế toán và thuế.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Cần một sự mạnh mẽ nhận OCR or máy quét hóa đơn để trích xuất dữ liệu từ biên lai? Kiểm tra Nanonets nhận API OCR!


Ai sẽ thấy Số hóa hóa đơn hữu ích?

Dưới đây là một số lĩnh vực mà Số hóa hóa đơn có thể tạo ra một tác động lớn:

Tài khoản phải trả và phải thu tự động

Tính toán các tài khoản phải trả (AP) và các khoản phải thu (AR) theo cách thủ công rất tốn kém, mất thời gian và có thể dẫn đến sự nhầm lẫn giữa người quản lý, khách hàng và nhà cung cấp. Với số hóa, các công ty có thể loại bỏ những nhược điểm này và có thể có nhiều lợi thế hơn - Tăng tính minh bạch, Phân tích dữ liệu, Cải thiện vốn lưu động và theo dõi dễ dàng hơn.

Tối ưu hóa chuỗi cung ứng

Chuỗi cung ứng là xương sống của nhiều hoạt động đúng đắn của công ty. Quản lý các nhiệm vụ, luồng thông tin và luồng sản phẩm là chìa khóa để đảm bảo kiểm soát hoàn toàn nguồn cung và sản xuất. Điều này rất cần thiết nếu các tổ chức phải đáp ứng thời gian giao hàng và kiểm soát chi phí sản xuất.

Các công ty đang thực sự phát triển mạnh trong những ngày này có một điểm chung đáng kể: chuỗi cung ứng số hóa. 89% công ty với chuỗi cung ứng kỹ thuật số nhận được các đơn đặt hàng hoàn hảo từ các nhà cung cấp quốc tế, đảm bảo giao hàng đúng hạn. Một trong những yếu tố quan trọng của việc hiện thực hóa Chuỗi cung ứng kỹ thuật số 4.0 thế hệ tiếp theo, là tự động hóa việc thu thập và quản lý dữ liệu và phần lớn dữ liệu này là hình thức biên nhận và hoá đơn. Việc nhập biên lai theo cách thủ công đóng vai trò như một nút thắt cổ chai trong toàn bộ chuỗi cung ứng và dẫn đến sự chậm trễ không cần thiết. Nếu quá trình xử lý biên nhận được số hóa, nó có thể dẫn đến lợi nhuận đáng kể về thời gian và hiệu quả.


Bạn có một vấn đề OCR trong tâm trí? Muốn số hóa hoá đơn, PDF hay biển số? Đi qua Ống nano và xây dựng các mô hình OCR miễn phí!


Tại sao nó là một vấn đề khó khăn?

Số hóa biên lai rất khó khăn vì biên lai có rất nhiều biến thể và đôi khi có chất lượng thấp. Quét biên lai cũng giới thiệu một số hiện vật vào bản sao kỹ thuật số của chúng tôi. Những hiện vật này đặt ra nhiều thách thức về khả năng đọc.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Đây là danh sách một vài điều khiến nó trở thành một vấn đề khó giải quyết

  • Văn bản viết tay
  • Phông chữ nhỏ
  • Hình ảnh ồn ào
  • Hình ảnh mờ
  • Máy ảnh chuyển động và lắc
  • Hình mờ
  • Nếp nhăn
  • Văn bản bị mờ

Một đường ống số hóa hóa đơn truyền thống

Một đường ống điển hình cho cách tiếp cận từ đầu đến cuối này bao gồm:

  • Sơ chế
  • Optical Character Recognition
  • Khai thác thông tin
  • Kết xuất dữ liệu
Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Hãy đi sâu hơn vào từng phần của đường ống. Bước đầu tiên của quy trình là Tiền xử lý.

Sơ chế

Hầu hết các biên lai được quét đều ồn ào và có các tạo tác và do đó để OCR và các hệ thống trích xuất thông tin hoạt động tốt, cần phải xử lý trước các biên lai. Các phương pháp tiền xử lý phổ biến bao gồm - Kiến trúc xám, Ngưỡng (Binarization) và loại bỏ tiếng ồn.

Grayscaling chỉ đơn giản là chuyển đổi một hình ảnh RGB thành một hình ảnh thang độ xám.

Loại bỏ tiếng ồn thường bao gồm loại bỏ tiếng ồn Salt và Pepper hoặc tiếng ồn Gaussian.

Hầu hết các công cụ OCR hoạt động tốt trên hình ảnh Đen trắng. Điều này có thể đạt được bằng cách tạo ngưỡng, là việc gán các giá trị pixel liên quan đến giá trị ngưỡng được cung cấp. Mỗi giá trị pixel được so sánh với giá trị ngưỡng. Nếu giá trị pixel nhỏ hơn ngưỡng, nó được đặt thành 0, ngược lại, nó được đặt thành giá trị tối đa (thường là 255).

OpenCV cung cấp các tùy chọn ngưỡng khác nhau - Ngưỡng đơn giản, Ngưỡng thích ứng

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Optical Character Recognition

Bước tiếp theo trong đường ống là OCR. Nó được sử dụng để đọc văn bản từ các hình ảnh như tài liệu được quét hoặc hình ảnh. Công nghệ này được sử dụng để chuyển đổi, hầu như mọi loại hình ảnh có chứa văn bản viết (đánh máy, viết tay hoặc in) thành dữ liệu văn bản có thể đọc được bằng máy. OCR bao gồm 2 bước - phát hiện văn bản và nhận dạng văn bản.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Có một số cách tiếp cận OCR. Cách tiếp cận máy tính thông thường là để

  • Sử dụng các bộ lọc để tách các ký tự khỏi nền
  • Áp dụng phát hiện đường viền để nhận ra các ký tự được lọc
  • Sử dụng phân loại pháp sư để xác định các nhân vật

Áp dụng các bộ lọc và phân loại hình ảnh khá đơn giản, (nghĩ rằng Phân loại MNIST bằng SVN), nhưng khớp đường viền là một vấn đề rất khó khăn và đòi hỏi nhiều nỗ lực thủ công và không thể khái quát.

Tiếp theo là các cách tiếp cận Học sâu. Deep Learning khái quát rất tốt. Một trong những cách tiếp cận phổ biến nhất để phát hiện văn bản là EAST. EAST (Máy dò văn bản cảnh chính xác hiệu quả) là một cách tiếp cận đơn giản nhưng mạnh mẽ để phát hiện văn bản. Mạng EAST thực sự là một phiên bản của U-Net nổi tiếng, rất tốt để phát hiện các tính năng có kích thước khác nhau.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

CRNNSTN-OCR (Mạng biến áp không gian) là các giấy tờ phổ biến khác thực hiện OCR.

Khai thác thông tin

Cách tiếp cận phổ biến nhất cho vấn đề Khai thác thông tin là dựa trên quy tắc, trong đó các quy tắc được viết bài OCR để trích xuất thông tin cần thiết. Đây là một cách tiếp cận mạnh mẽ và chính xác, nhưng nó đòi hỏi bạn phải viết các quy tắc hoặc mẫu mới cho một loại tài liệu mới.

Một số quy tắc dựa trên hóa đơn hệ thống phân tích tồn tại trong văn học.

  • Intellix của DocuWare yêu cầu một mẫu chú thích với các trường có liên quan.
  • SmartFix sử dụng các quy tắc cấu hình được thiết kế riêng cho từng mẫu

Các phương thức dựa trên quy tắc phụ thuộc nhiều vào các quy tắc mẫu được xác định trước để trích xuất thông tin từ các bố cục hóa đơn cụ thể

Một cách tiếp cận đã trở nên rất phổ biến trong vài năm qua là sử dụng khung Phát hiện Đối tượng tiêu chuẩn như YOLO, Faster R-CNN để nhận dạng các trường. Vì vậy, thay vì phát hiện văn bản thuần túy, nhận dạng trường và phát hiện văn bản được thực hiện đồng thời. Điều này làm cho đường ống nhỏ hơn (Phát hiện văn bản → Nhận dạng → Trích xuất để phát hiện → Nhận dạng). Không cần phải viết bất kỳ quy tắc nào vì bộ phát hiện đối tượng học cách nhận ra các trường này.

Kết xuất dữ liệu

Khi bạn đã trích xuất thông tin của mình, kết xuất dữ liệu có thể được thực hiện theo trường hợp sử dụng của chúng tôi yêu cầu. Thường thì một định dạng JSON để lưu trữ thông tin các trường là thuận tiện. Các tệp JSON này có thể dễ dàng được chuyển đổi thành các tệp XML, trang tính Excel, tệp CSV hoặc tệp văn bản gốc tùy thuộc vào người muốn làm việc với dữ liệu và cách thức.

Số hóa biên nhận bằng cách sử dụng Tesseract

Bây giờ chúng ta có một ý tưởng về đường ống dẫn, hãy thực hiện nó trên một biên nhận ví dụ. Đây là biên nhận chúng tôi sẽ làm việc với. Mục tiêu của chúng tôi ở cuối mục này là trích xuất tên Nhà hàng, Các mặt hàng được mua với số lượng và chi phí, ngày mua và tổng số.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Sơ chế

Vì hóa đơn của chúng tôi đã ở trong thang độ xám và không có nhiều tiếng ồn, tôi sẽ chỉ thực hiện ngưỡng bằng cách áp dụng ngưỡng 210. Bạn có thể điều chỉnh giá trị để có đầu ra phù hợp. Quá ít và bạn sẽ bỏ lỡ rất nhiều. Quá gần với 255 sẽ làm cho mọi thứ màu đen.

Chúng ta sẽ cần cài đặt OpenCV trước.

pip install opencv-python

Đây là mã cho ngưỡng.

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

Đây là những gì đầu ra trông như thế nào.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Phát hiện văn bản

Để phát hiện văn bản, tôi sẽ sử dụng một thư viện nguồn mở có tên Tesseract. Đó là thư viện OCR dứt khoát và được Google phát triển từ năm 2006. Bản phát hành mới nhất của Tesseract (v4) hỗ trợ OCR dựa trên học tập sâu, chính xác hơn đáng kể. Bản thân công cụ OCR cơ bản sử dụng mạng Bộ nhớ ngắn hạn (LSTM) dài.

Trước tiên hãy cài đặt phiên bản mới nhất của Tesseract.

Dành cho Ubuntu

sudo apt install tesseract-ocr

Đối với macOS

brew install tesseract --HEAD

Đối với windows, bạn có thể tải xuống các tệp nhị phân từ đây trang

Xác nhận phiên bản tesseract của bạn.

tesseract -v

Đầu ra -

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

Cài đặt các ràng buộc Tesseract + Python của bạn

Bây giờ chúng ta đã cài đặt nhị phân Tesseract, bây giờ chúng ta cần cài đặt các ràng buộc Tesseract + Python để các tập lệnh Python của chúng ta có thể giao tiếp với Tesseract. Chúng tôi cũng cần cài đặt gói ngôn ngữ tiếng Đức vì biên nhận bằng tiếng Đức.

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

Bây giờ chúng ta đã cài đặt Tesseract, hãy bắt đầu phát hiện các hộp văn bản.Tesseract có sẵn chức năng phát hiện hộp văn bản.

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

Đây là đầu ra của mã phát hiện văn bản.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Nhận dạng văn bản

Chúng tôi sẽ Tesseract thực hiện OCR. Tesseract 4 sử dụng phương pháp học sâu, thực hiện tốt hơn đáng kể so với hầu hết các triển khai nguồn mở khác.

Đây là mã nhận dạng văn bản. Mặc dù nó là một lớp lót rất đơn giản, nhưng có rất nhiều thứ nằm dưới mui xe.

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

Đây là đầu ra thô.

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

Đây là đầu ra được định dạng

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

Cần số hóa tài liệu, biên lai hoặc hoá đơn nhưng quá lười biếng để viết mã? Đi qua Ống nano và xây dựng các mô hình OCR miễn phí!


Khai thác thông tin

Như tôi đã đề cập trước đây, cách trích xuất thông tin phổ biến nhất là theo cách tiếp cận dựa trên quy tắc.

Tất cả các hóa đơn từ khách sạn này sẽ theo một cấu trúc cố định và thông tin xuất hiện trên các dòng khác nhau. Điều này được phản ánh trong đầu ra OCR nơi dòng mới được biểu thị bằng 'n'. Sử dụng chúng hãy viết một bộ quy tắc để trích xuất thông tin. Bộ quy tắc này có thể được áp dụng cho bất kỳ biên lai nào từ khách sạn này vì chúng sẽ tuân theo cùng một định dạng.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Tôi sẽ trích xuất tên Nhà hàng, ngày giao dịch, các mặt hàng đã mua, số lượng của chúng, tổng chi phí cho mỗi mặt hàng và tổng số tiền bằng cách sử dụng các lệnh python đơn giản và các biểu thức thông thường.

Đây là một từ điển nơi tôi sẽ lưu trữ thông tin trích xuất.

receipt _ocr = {}

Bước đầu tiên là trích xuất tên Nhà hàng. Vị trí của tên nhà hàng sẽ không đổi trong tất cả các biên lai và đó là trong 2 dòng đầu tiên. Hãy sử dụng điều này để tạo quy tắc.

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

Tiếp theo, chúng tôi trích xuất ngày giao dịch. Ngày regex là khá đơn giản.


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)

Đầu ra -

‘30.10.2007’

Tiếp theo chúng tôi trích xuất tất cả các thông tin liên quan đến các mặt hàng và chi phí.

Các mặt hàng có chứa CHF là franc Thụy Sĩ. Hãy phát hiện tất cả các lần xuất hiện của CHF. Bây giờ chúng ta có thể phát hiện các dòng bằng cách nhận ra các ký tự giữa 2 n và chứa CHF. Tôi cũng đang phát hiện tổng số ở đây.

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

Đầu ra -

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

Nếu bạn để ý, Tesseract đã bỏ lỡ một mục vì nó phát hiện CH thay vì CHF. Tôi sẽ đề cập đến những thách thức trong các hệ thống OCR truyền thống trong phần tiếp theo.

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

In đầu ra JSON của chúng tôi -

{'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ất cả thông tin chính đã được trích xuất và đổ vào receive_json ..

Các vấn đề với cách tiếp cận thông thường

Mặc dù chúng tôi trích xuất thông tin, các đường ống trên bỏ lỡ một số điều và là tối ưu phụ. Đối với mỗi biên lai mới, chúng ta cần viết một bộ quy tắc mới và do đó không thể mở rộng được.

Có thể có rất nhiều biến thể trong Bố cục, kích thước phông chữ và phông chữ, tài liệu viết tay, v.v. Sự khác biệt trong bố cục sẽ ảnh hưởng đến các cách tiếp cận dựa trên quy tắc và những điều này cần được tính đến, điều này trở nên rất tẻ nhạt. Sự khác biệt về kích thước phông chữ và phông chữ làm cho khó nhận biết và trích xuất thông tin.

Tại sao đường ống Deep Learning từ đầu đến cuối tốt hơn?

Một trong những vấn đề lớn nhất với cách tiếp cận tiêu chuẩn là thiếu khái quát. Các cách tiếp cận dựa trên quy tắc không thể khái quát hóa và các quy tắc mới cần được viết cho bất kỳ mẫu mới nào. Ngoài ra, bất kỳ thay đổi hoặc biến thể trong một mẫu hiện có cũng cần phải được tính đến.

Cách tiếp cận Deep Learning sẽ có thể tìm hiểu các quy tắc này và có thể khái quát hóa các bố cục khác nhau một cách dễ dàng, miễn là chúng tôi có chúng trong tập dữ liệu đào tạo của chúng tôi.

Học sâu và khai thác thông tin

Ở đây tôi xem xét một vài bài viết sử dụng phương pháp Deep Learning từ đầu đến cuối.

CẮT

CUTIE: Học cách hiểu tài liệu với trình trích xuất thông tin văn bản phổ biến

Bài viết này đề xuất một phương pháp khai thác thông tin quan trọng dựa trên học tập với yêu cầu hạn chế về nguồn nhân lực. Nó kết hợp thông tin từ cả ý nghĩa ngữ nghĩa và phân phối không gian của các văn bản trong tài liệu. Mô hình đề xuất của họ, Công cụ trích xuất thông tin văn bản phổ biến (CUTIE), áp dụng các mạng thần kinh tích chập trên các văn bản có lưới, trong đó các văn bản được nhúng như các tính năng với ý nghĩa ngữ nghĩa.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Mô hình đề xuất, Giải quyết vấn đề khai thác thông tin quan trọng bằng cách

  • Đầu tiên tạo ra các văn bản có lưới với đề xuất phương pháp ánh xạ vị trí lưới. Để tạo dữ liệu lưới cho mạng nơ ron tích chập, hình ảnh tài liệu được quét được xử lý bởi một công cụ OCR để thu được các văn bản và vị trí tuyệt đối / tương đối của chúng. Các văn bản được ánh xạ từ hình ảnh tài liệu được quét ban đầu vào lưới đích, sao cho lưới được ánh xạ bảo tồn mối quan hệ không gian ban đầu giữa các văn bản nhưng phù hợp hơn để được sử dụng làm đầu vào cho mạng nơ ron tích chập.
  • Sau đó, mô hình CUTIE được áp dụng trên các văn bản có lưới. Thông tin ngữ nghĩa phong phú được mã hóa từ các văn bản có lưới ở giai đoạn đầu của mạng nơ ron tích chập với lớp nhúng từ.

CUTIE cho phép đồng thời xem xét cả thông tin ngữ nghĩa và thông tin không gian của các văn bản trong hình ảnh tài liệu được quét và có thể đạt đến trạng thái mới của kết quả nghệ thuật để trích xuất thông tin chính.

Mô hình CUTIE

Họ có 2 mô hình CUTIE-A và CUTIE-B. CUTIE-A được đề xuất là một mạng nơ ron tích chập có dung lượng cao, hợp nhất các tính năng đa độ phân giải mà không làm mất các tính năng có độ phân giải cao. CUTIE-B là một mạng tích chập với tích chập để mở rộng trường nhìn và mô đun Pooling Pyramid Spatial Pyramid Pooling (ASPP) để chụp các bối cảnh đa quy mô. Cả CUTIE-A và CUITE-B đều tiến hành quá trình mã hóa ý nghĩa ngữ nghĩa với một lớp nhúng từ trong giai đoạn đầu.

Nhiệm vụ của CUTIE giống với nhiệm vụ phân đoạn ngữ nghĩa. Lưới được ánh xạ chứa các điểm dữ liệu rải rác (mã thông báo văn bản) trái ngược với hình ảnh tràn ngập pixel. Các văn bản chính được ánh xạ theo vị trí lưới gần hoặc xa nhau do các kiểu bố trí tài liệu khác nhau. Do đó, kết hợp khả năng xử lý bối cảnh đa quy mô có lợi cho mạng.

Bộ dữ liệu

Phương pháp được đề xuất được đánh giá trong thử thách đọc mạnh mẽ của ICDAR 2019 trên bộ dữ liệu của SROIE và cũng là một bộ dữ liệu tự xây dựng với 3 loại hình ảnh tài liệu được quét.

Sản phẩm Bộ dữ liệu của ICDAR 2019 được sử dụng chứa 1000 hình ảnh biên nhận được quét toàn bộ. Mỗi hình ảnh biên lai chứa khoảng bốn trường văn bản chính, chẳng hạn như tên hàng hóa, đơn giá, ngày tháng và tổng chi phí. Văn bản được chú thích trong tập dữ liệu chủ yếu bao gồm các chữ số và ký tự tiếng Anh.

Bộ dữ liệu tự xây dựng chứa 4, 484 tài liệu biên lai được quét chú thích của Tây Ban Nha, bao gồm biên lai taxi, biên lai giải trí bữa ăn (ME) và biên lai khách sạn, với 9 lớp thông tin quan trọng khác nhau.

Kết quả

Hiệu suất tổng thể được đánh giá bằng cách sử dụng độ chính xác trung bình (AP - và được đo theo độ chính xác của mỗi lớp trong 9 lớp,.) Và độ chính xác trung bình mềm (softAP) trong đó dự đoán về lớp thông tin chính được xác định là đúng nếu sự thật cơ bản khẳng định được dự đoán chính xác ngay cả khi một số kết quả dương tính sai được đưa vào dự đoán cuối cùng. phân tích chung về AP và softAP giúp hiểu rõ hơn về hiệu suất của mô hình.

Bạn có thể xem kết quả trong bảng dưới đây.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

GCN cho VRD

Kết hợp đồ thị để khai thác thông tin đa phương thức từ các tài liệu trực quan phong phú

Bài viết này giới thiệu một mô hình dựa trên tích chập biểu đồ để kết hợp thông tin văn bản và hình ảnh được trình bày trong các tài liệu Trực quan (VRDs). Các nhúng đồ thị được đào tạo để tóm tắt bối cảnh của một đoạn văn bản trong tài liệu và được kết hợp thêm với các nhúng văn bản để trích xuất thực thể.

Trong bài báo này, họ gọi một tài liệu là VRD và tôi sẽ gắn bó với nó.

Mỗi tài liệu được mô hình hóa dưới dạng biểu đồ của các phân đoạn văn bản, trong đó mỗi phân đoạn văn bản bao gồm vị trí của phân khúc và văn bản trong đó. Biểu đồ bao gồm các nút đại diện cho các phân đoạn văn bản và các cạnh đại diện cho các phụ thuộc trực quan, chẳng hạn như hình dạng và khoảng cách tương đối, giữa hai nút.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Các nhúng đồ thị được tạo bởi tích chập biểu đồ tóm tắt bối cảnh của một đoạn văn bản trong tài liệu, được kết hợp thêm với các nhúng văn bản để trích xuất thực thể bằng mô hình BiLSTM-CRF tiêu chuẩn.

Mô hình

Mô hình trước tiên mã hóa từng phân đoạn văn bản trong tài liệu thành nhúng biểu đồ, sử dụng nhiều lớp tích chập biểu đồ. Việc nhúng thể hiện thông tin trong đoạn văn bản với bối cảnh trực quan và văn bản của nó. Bối cảnh trực quan là bố cục của tài liệu và vị trí tương đối của phân khúc riêng lẻ với các phân khúc khác. Bối cảnh văn bản là tổng hợp thông tin văn bản trong tài liệu tổng thể; Mô hình học cách gán trọng số cao hơn cho các văn bản từ các phân đoạn lân cận. Sau đó, bài báo kết hợp các nhúng đồ thị với các nhúng văn bản và áp dụng một BiLSTM-CRFmodel tiêu chuẩn để trích xuất thực thể.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Bộ dữ liệu

Hai bộ dữ liệu trong thế giới thực được sử dụng. Chúng là Hóa đơn thuế ValueAdded (VATI) và Biên lai mua hàng quốc tế (IPR). VATI bao gồm 3000 hình ảnh do người dùng tải lên và có 16 thực thể chính xác. Các thực thể ví dụ là tên của người mua / người bán, ngày và số tiền thuế. Các hóa đơn bằng tiếng Trung Quốc và nó có một mẫu cố định vì nó là hóa đơn tiêu chuẩn quốc gia.

IPR là một bộ dữ liệu gồm 1500 tài liệu biên lai được quét bằng tiếng Anh, có 4 thực thể chính xác (Số hóa đơn, Tên nhà cung cấp, Tên người trả tiền và Tổng số tiền). Có tồn tại 146 mẫu cho các biên lai.

Kết quả

Điểm F1 được sử dụng để đánh giá hiệu suất của mô hình trong tất cả các thử nghiệm. Bảng dưới đây có kết quả trên 2 bộ dữ liệu.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Đường cơ sở tôi áp dụng BiLSTM-CRF cho từng phân đoạn văn bản, trong đó mỗi phân đoạn văn bản là một câu riêng lẻ.

Đường cơ sở II áp dụng mô hình gắn thẻ cho các đoạn văn bản được nối.

Nhanh hơn-RCNN + AED

Phương pháp học tập sâu để nhận

Bài viết này trình bày một phương pháp học tập sâu để nhận ra các biên lai được quét. Hệ thống nhận dạng có hai mô-đun chính: phát hiện văn bản dựa trên Mạng đề xuất văn bản kết nối và nhận dạng văn bản dựa trên Bộ giải mã-giải mã dựa trên chú ý. Hệ thống đạt 71.9% số điểm F1 cho nhiệm vụ phát hiện và nhận dạng.

Phát hiện văn bản

Cấu trúc CTPN tương tự Faster R-CNN, với việc bổ sung lớp LSTM. Mô hình mạng chủ yếu bao gồm ba phần: trích xuất tính năng của VGG16, LSTM hai chiều và hồi quy hộp giới hạn

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Nhận dạng văn bản

AED được sử dụng để nhận dạng dòng văn bản. AED có hai mô-đun chính: DenseNet để trích xuất các tính năng từ hình ảnh văn bản và LSTM kết hợp với mô hình chú ý để dự đoán văn bản đầu ra.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Bộ dữ liệu

Bộ dữ liệu từ SROIE 2019 được sử dụng. Họ chia dữ liệu đào tạo thành đào tạo, xác nhận và kiểm tra và chọn ngẫu nhiên 80% biên lai cho đào tạo, 10% biên lai để xác nhận và phần còn lại để kiểm tra. Kết quả là 500 biên lai cho đào tạo, 63 biên nhận xác nhận và 63 biên nhận để thử nghiệm.

Kết quả

Để phát hiện văn bản, bài viết sử dụng Liên kết nhận biết độ chặt chẽ (TIoU) Để nhận dạng văn bản, bài viết đã sử dụng F1, Chính xác và Thu hồi.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Bảng I cho thấy kết quả của CTPN với ba điều kiện: CTPN trên ảnh gốc; tiền xử lý + CTPN, tiền xử lý + xác minh CTPN + OCR. Bảng 2 cho thấy kết quả của mạng AED.

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Tất nhiên, có một cách dễ dàng, trực quan hơn để làm điều này.


Cần một sự mạnh mẽ nhận OCR để trích xuất dữ liệu từ biên lai? Kiểm tra Nanonets nhận API OCR!


OCR với Nanonets

Cập nhật # 1: Chúng tôi vừa phát hành nhận OCR người mẫu được đào tạo trước. Truy cập https://app.nanonets.com và bắt đầu thử nghiệm!

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Sản phẩm API OCR của Nanonets cho phép bạn xây dựng các mô hình OCR một cách dễ dàng. Bạn không phải lo lắng về việc xử lý trước hình ảnh của mình hoặc lo lắng về các mẫu phù hợp hoặc xây dựng các công cụ dựa trên quy tắc để tăng độ chính xác của mô hình OCR của bạn.

Bạn có thể tải lên dữ liệu của mình, chú thích dữ liệu, đặt mô hình để đào tạo và chờ nhận dự đoán thông qua giao diện người dùng dựa trên trình duyệt mà không cần viết một dòng mã, lo lắng về GPU hoặc tìm kiến ​​trúc phù hợp cho mô hình học sâu của bạn. Bạn cũng có thể có được các phản hồi JSON của từng dự đoán để tích hợp nó với các hệ thống của riêng bạn và xây dựng các ứng dụng hỗ trợ học máy được xây dựng dựa trên các thuật toán hiện đại và cơ sở hạ tầng mạnh.

Sử dụng GUI: https://app.nanonets.com/

Bạn cũng có thể sử dụng API Nanonets-OCR bằng cách thực hiện theo các bước bên dưới:

Bước 1: Sao chép Repo, Cài đặt phụ thuộc

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

Bước 2: Nhận Khóa API miễn phí của bạn
Nhận Khóa API miễn phí của bạn từ http://app.nanonets.com/#/keys

Tự động hóa số hóa hóa đơn với OCR và Deep Learning

Bước 3: Đặt khóa API làm Biến môi trường

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Bước 4: Tạo mô hình mới

python ./code/create-model.py

Lưu ý: Điều này tạo ra MODEL_ID mà bạn cần cho bước tiếp theo

Bước 5: Thêm Id mẫu làm biến môi trường

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Lưu ý: bạn sẽ nhận được YOU_MODEL_ID từ bước trước

Bước 6: Tải lên dữ liệu đào tạo
Dữ liệu đào tạo được tìm thấy trong images (tệp hình ảnh) và annotations (chú thích cho các tập tin hình ảnh)

python ./code/upload-training.py

Bước 7: Mô hình tàu hỏa
Khi Hình ảnh đã được tải lên, hãy bắt đầu đào tạo Mô hình

python ./code/train-model.py

Bước 8: Lấy trạng thái mẫu
Mô hình mất ~ 2 giờ để đào tạo. Bạn sẽ nhận được email khi mô hình được đào tạo. Trong khi đó, bạn kiểm tra trạng thái của mô hình

python ./code/model-state.py

Bước 9: Đưa ra dự đoán
Một khi mô hình được đào tạo. Bạn có thể đưa ra dự đoán bằng mô hình

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

Đọc thêm

Cập nhật:
‌ Đã thêm nhiều tài liệu đọc hơn về những tiến bộ mới nhất trong việc tự động hóa số hóa biên nhận bằng OCR và Deep Learning.

Dấu thời gian:

Thêm từ AI & Máy học