دیجیتالی سازی خودکار رسید با OCR و هوش داده پلاتو بلاک چین عمیق یادگیری. جستجوی عمودی Ai.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

آیا می خواهید استخراج داده ها از رسیدها را به صورت خودکار انجام دهید؟ از قبل آموزش داده شده نانونت ها را بررسی کنید رسید OCR or خودتان را بسازید OCR رسید سفارشی شما همچنین می توانید برنامه آزمایشی را برنامه ریزی کنید برای کسب اطلاعات بیشتر در مورد موارد استفاده از AP ​​ما!


رسید OCR یا دیجیتالی شدن رسید، چالش استخراج خودکار اطلاعات از رسید را برطرف می کند. در این مقاله، من تئوری پشت دیجیتالی شدن رسید را پوشش می‌دهم و یک خط لوله سرتاسری را با استفاده از OpenCV و پیاده‌سازی می‌کنم. Tesseract. من همچنین چند مقاله مهم را که دیجیتالی کردن رسید را با استفاده از یادگیری عمیق انجام می دهند، مرور می کنم.

دیجیتالی شدن رسید چیست؟

رسیدها حاوی اطلاعات مورد نیاز برای انجام داد و ستد بین شرکت ها هستند و بیشتر آن روی کاغذ یا در قالب های نیمه ساختار یافته مانند PDF و تصاویر کاغذی/کپی های سخت است. به منظور مدیریت موثر این اطلاعات، شرکت ها اطلاعات مربوطه موجود در این اسناد را استخراج و ذخیره می کنند. به طور سنتی این امر با استخراج دستی اطلاعات مربوطه و وارد کردن آن در یک پایگاه داده به دست می‌آید که فرآیندی پر زحمت و پرهزینه است.

دیجیتالی شدن رسید به چالش استخراج خودکار اطلاعات از رسید می پردازد.

استخراج اطلاعات کلیدی از رسیدها و تبدیل آنها به اسناد ساختاریافته می تواند به بسیاری از برنامه ها و خدمات مانند بایگانی کارآمد، نمایه سازی سریع و تجزیه و تحلیل اسناد کمک کند. آنها نقش مهمی در ساده سازی فرآیندهای مبتنی بر اسناد و اتوماسیون اداری در بسیاری از حوزه های مالی، حسابداری و مالیاتی دارند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

نیاز به یک قوی رسید OCR or اسکنر رسید برای استخراج داده ها از رسیدها؟ نانو شبکه ها را بررسی کنید API OCR رسید!


چه کسی دیجیتالی شدن رسید را مفید خواهد یافت؟

در اینجا چند زمینه وجود دارد که دیجیتالی شدن رسید می تواند تأثیر زیادی داشته باشد:

اتوماسیون حساب های پرداختنی و دریافتنی

محاسبه حساب های پرداختنی (AP) و حساب های دریافتنی (ARs) به صورت دستی پرهزینه، وقت گیر است و می تواند منجر به سردرگمی بین مدیران، مشتریان و فروشندگان شود. با دیجیتالی‌سازی، شرکت‌ها می‌توانند این معایب را از بین ببرند و می‌توانند مزایای بیشتری داشته باشند - افزایش شفافیت، تجزیه و تحلیل داده‌ها، بهبود سرمایه در گردش و ردیابی آسان‌تر.

بهینه سازی زنجیره تامین

زنجیره های تامین، ستون فقرات عملکرد مناسب بسیاری از شرکت ها هستند. مدیریت وظایف، جریان اطلاعات و جریان محصول، کلید تضمین کنترل کامل عرضه و تولید است. اگر سازمان ها بخواهند زمان های تحویل را برآورده کنند و هزینه های تولید را کنترل کنند، این امر ضروری است.

شرکت هایی که این روزها واقعاً شکوفا می شوند وجه اشتراک قابل توجهی دارند: زنجیره تامین دیجیتالی شده. 89٪ از شرکتها با زنجیره های تامین دیجیتال، سفارشات عالی را از تامین کنندگان بین المللی دریافت می کنند و از تحویل به موقع اطمینان حاصل می کنند. یکی از عناصر کلیدی تحقق نسل بعدی زنجیره تامین دیجیتال 4.0، خودکارسازی و مدیریت داده‌ها است و بسیاری از این داده‌ها به صورت دریافت و دریافت است. فاکتورها. ورود دستی رسیدها به عنوان یک گلوگاه در سراسر زنجیره تامین عمل می کند و منجر به تاخیرهای غیرضروری می شود. اگر این پردازش رسید دیجیتالی شود، می تواند به سود قابل توجهی در زمان و کارایی منجر شود.


آیا مشکل OCR در ذهن دارید؟ می خواهید دیجیتالی کنید فاکتورها، پی دی اف یا پلاک؟ سر به نانوت و ساخت مدل های OCR به صورت رایگان!


چرا مشکل سختی است؟

دیجیتالی کردن رسیدها دشوار است زیرا رسیدها دارای تنوع زیادی هستند و گاهی اوقات کیفیت پایینی دارند. اسکن رسیدها همچنین چندین مصنوع را به نسخه دیجیتالی ما وارد می کند. این مصنوعات چالش‌های خوانایی زیادی ایجاد می‌کنند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

در اینجا لیستی از چند مورد است که شکستن آن را دشوار می کند

  • متن دست نویس
  • فونت های کوچک
  • تصاویر پر سر و صدا
  • تصاویر محو شده
  • حرکت دوربین و لرزش
  • واترمارکینگ
  • چین و چروک
  • متن محو شده

خط لوله دیجیتالی رسید سنتی

یک خط لوله معمولی برای این نوع رویکرد انتها به انتها شامل موارد زیر است:

  • پیش پردازش
  • تشخیص نوری شخصیت
  • استخراج اطلاعات
  • تخلیه داده ها
دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

بیایید عمیق تر به هر قسمت از خط لوله شیرجه بزنیم. اولین مرحله از فرآیند، پیش پردازش است.

پیش پردازش

اکثر رسیدهای اسکن شده دارای نویز هستند و دارای مصنوعات هستند و بنابراین برای اینکه OCR و سیستم های استخراج اطلاعات به خوبی کار کنند، لازم است که رسیدها از قبل پردازش شوند. روش‌های متداول پیش پردازش عبارتند از - مقیاس خاکستری، آستانه‌سازی (دودویی‌سازی) و حذف نویز.

مقیاس خاکستری به سادگی تبدیل یک تصویر RGB به یک تصویر در مقیاس خاکستری است.

حذف نویز معمولاً شامل حذف نویز نمک و فلفل یا نویز گاوسی است.

اکثر موتورهای OCR روی تصاویر سیاه و سفید به خوبی کار می کنند. این را می توان با آستانه گذاری، که تخصیص مقادیر پیکسل در رابطه با مقدار آستانه ارائه شده است، به دست آورد. هر مقدار پیکسل با مقدار آستانه مقایسه می شود. اگر مقدار پیکسل کوچکتر از آستانه باشد، روی 0 تنظیم می شود، در غیر این صورت، مقدار حداکثر (معمولاً 255) تنظیم می شود.

OpenCV گزینه های مختلف آستانه را ارائه می دهد - آستانه ساده، آستانه تطبیقی

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

تشخیص نوری شخصیت

مرحله بعدی در خط لوله است OCR. برای خواندن متن از تصاویر مانند یک سند اسکن شده یا یک عکس استفاده می شود. این فناوری برای تبدیل تقریباً هر نوع تصویر حاوی متن نوشته شده (تایپ شده، دست نویس یا چاپ شده) به داده های متنی قابل خواندن توسط ماشین استفاده می شود.. OCR شامل 2 مرحله است - تشخیص متن و تشخیص متن.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

تعدادی رویکرد برای OCR وجود دارد. رویکرد مرسوم کامپیوتر ویژن به این است

  • استفاده از فیلترها برای جدا کردن کاراکترها از پس زمینه
  • برای تشخیص کاراکترهای فیلتر شده، تشخیص کانتور را اعمال کنید
  • برای شناسایی شخصیت ها از طبقه بندی Mage استفاده کنید

اعمال فیلترها و طبقه بندی تصاویر بسیار ساده است (به طبقه بندی MNIST با استفاده از SVN فکر کنید)، اما تطبیق خطوط یک مشکل بسیار دشوار است و به تلاش دستی زیادی نیاز دارد و قابل تعمیم نیست.

در مرحله بعد، رویکردهای یادگیری عمیق آمده است. یادگیری عمیق به خوبی تعمیم می دهد. یکی از محبوب ترین روش ها برای تشخیص متن، EAST است. EAST ( آشکارساز متن صحنه دقیق کارآمد) یک روش ساده و در عین حال قدرتمند برای تشخیص متن است. شبکه EAST در واقع نسخه ای از U-Net شناخته شده است که برای تشخیص ویژگی های اندازه های مختلف خوب است.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

CRNN و STN-OCR (Spatial Transformer Networks) از دیگر کاغذهای معروفی هستند که OCR را انجام می دهند.

استخراج اطلاعات

رایج ترین رویکرد برای مشکل استخراج اطلاعات مبتنی بر قانون است، که در آن قوانین پس از OCR برای استخراج اطلاعات مورد نیاز نوشته می شوند. این یک رویکرد قدرتمند و دقیق است، اما از شما می‌خواهد که قوانین یا الگوهای جدیدی را برای نوع جدیدی از سند بنویسید.

چندین قانون مبتنی بر فاکتور سیستم های تجزیه و تحلیل در ادبیات وجود دارد.

  • Intellix توسط DocuWare به یک الگوی مشروح با فیلدهای مربوطه نیاز دارد.
  • SmartFix از قوانین پیکربندی طراحی شده خاص برای هر الگو استفاده می کند

روش‌های مبتنی بر قانون برای استخراج اطلاعات از طرح‌بندی‌های خاص صورت‌حساب، به شدت به قوانین قالب از پیش تعریف‌شده متکی هستند.

یکی از رویکردهایی که در چند سال گذشته بسیار رایج شده است، استفاده از چارچوب استاندارد تشخیص اشیا مانند YOLO، سریعتر R-CNN برای تشخیص فیلدها است. بنابراین به جای تشخیص متن خالص، تشخیص میدان و تشخیص متن به طور همزمان انجام می شود. این باعث کوچکتر شدن خط لوله می شود (تشخیص متن → تشخیص → استخراج به تشخیص → شناسایی). نیازی به نوشتن قوانینی نیست زیرا آشکارساز شی یاد می گیرد که این فیلدها را تشخیص دهد.

تخلیه داده ها

هنگامی که اطلاعات خود را استخراج کردید، حذف داده‌ها می‌تواند مطابق با موارد استفاده ما انجام شود. اغلب فرمت JSON برای ذخیره اطلاعات فیلدها راحت است. بسته به اینکه چه کسی و چگونه می‌خواهد با داده‌ها کار کند، می‌توان این فایل‌های JSON را به آسانی به فایل‌های XML، برگه‌های اکسل، فایل‌های 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 زیربنایی از یک شبکه حافظه کوتاه مدت بلند مدت (LSTM) استفاده می کند.

ابتدا آخرین نسخه Tesseract را نصب می کنیم.

برای اوبونتو

sudo apt install tesseract-ocr

برای macOS

brew install tesseract --HEAD

برای ویندوز، می توانید باینری ها را از اینجا دانلود کنید با ما

نسخه 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 را نصب کرده ایم، اکنون باید پیوندهای Tesseract + Python را نصب کنیم تا اسکریپت های Python ما بتوانند با Tesseract ارتباط برقرار کنند. همچنین باید بسته زبان آلمانی را نصب کنیم زیرا رسید به زبان آلمانی است.

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 به صورت رایگان!


استخراج اطلاعات

همانطور که قبلا ذکر کردم رایج ترین روش استخراج اطلاعات، رویکرد مبتنی بر قانون است.

تمام رسیدهای این هتل از ساختار ثابتی پیروی می کنند و اطلاعات در خطوط مختلف ظاهر می شود. این در خروجی OCR منعکس می شود که در آن خطوط جدید با 'n' نشان داده می شوند. با استفاده از اینها، اجازه دهید مجموعه ای از قوانین را برای استخراج اطلاعات بنویسیم. این مجموعه قوانین را می توان برای هر رسیدی از این هتل اعمال کرد زیرا آنها از همان قالب پیروی می کنند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

من نام رستوران، تاریخ معامله، اقلام خریداری شده، مقدار آنها، کل هزینه هر مورد و کل مبلغ را با استفاده از دستورات ساده پایتون و عبارات منظم استخراج خواهم کرد.

این دیکشنری است که من اطلاعات استخراج شده را در آن ذخیره خواهم کرد.

receipt _ocr = {}

اولین قدم استخراج نام رستوران است. قرار است محل نام رستوران در تمام رسیدها ثابت باشد و آن در 2 سطر اول است. بیایید از این برای ایجاد یک قانون استفاده کنیم.

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

در مرحله بعد تاریخ معامله را استخراج می کنیم. Regex تاریخ بسیار ساده است.


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 را شناسایی کرده است. در بخش بعدی چالش‌های سیستم‌های 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

این مقاله پیشنهاد می کند یک روش استخراج اطلاعات کلیدی مبتنی بر یادگیری با نیاز محدود به منابع انسانی. این اطلاعات را از هر دو معنای معنایی و توزیع فضایی متون در اسناد ترکیب می کند. مدل پیشنهادی آن‌ها، استخراج‌کننده اطلاعات متنی کانولوشنال جهانی (CUTIE)، شبکه‌های عصبی کانولوشنال را بر روی متون شبکه‌ای که متون به عنوان ویژگی‌هایی با معانی معنایی تعبیه شده‌اند، اعمال می‌کند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

مدل پیشنهادی, با مشکل استخراج اطلاعات کلیدی مقابله می کند

  • ابتدا متن های شبکه ای را با پیشنهاد ایجاد کنید روش نگاشت موقعیت شبکه. برای تولید داده‌های شبکه‌ای برای شبکه عصبی کانولوشن، تصویر سند اسکن شده توسط یک موتور OCR پردازش می‌شود تا متون و موقعیت‌های مطلق/نسبی آنها را بدست آورد. متون از تصویر سند اسکن شده اصلی به شبکه هدف نگاشت می شوند، به طوری که شبکه نگاشت شده رابطه فضایی اصلی را بین متون حفظ می کند و در عین حال مناسب تر برای استفاده به عنوان ورودی برای شبکه عصبی کانولوشن است.
  • سپس مدل CUTIE بر روی متون شبکه بندی شده اعمال می شود. اطلاعات معنایی غنی از متون شبکه ای در همان مرحله ابتدایی شبکه عصبی کانولوشن با یک لایه جاسازی کلمه کدگذاری می شود.

CUTIE امکان بررسی همزمان اطلاعات معنایی و اطلاعات مکانی متون در تصویر سند اسکن شده را فراهم می کند و می تواند به یک نتیجه جدید از هنر برای استخراج اطلاعات کلیدی دست یابد.

مدل CUTIE

دارای 2 مدل CUTIE-A و CUTIE-B هستند. CUTIE-A پیشنهادی یک شبکه عصبی کانولوشنال با ظرفیت بالا است که ویژگی‌های با وضوح چندگانه را بدون از دست دادن ویژگی‌های با وضوح بالا ترکیب می‌کند. CUTIE-B یک شبکه کانولوشن با کانولوشن آتروس برای بزرگ‌کردن میدان دید و ماژول Atrous Spatial Pyramid Pooling (ASPP) برای گرفتن زمینه‌های چند مقیاسی است. هر دو CUTIE-A و CUITE-B فرآیند رمزگذاری معنایی معنایی را با لایه جاسازی کلمه در همان مرحله آغاز انجام می دهند.

وظیفه CUTIE شباهت به وظیفه تقسیم بندی معنایی دارد. شبکه نگاشت شده حاوی نقاط داده پراکنده (توکن های متنی) است برخلاف تصاویری که با پیکسل ها پخش شده اند. متن‌های کلیدی نگاشت موقعیت شبکه به دلیل انواع مختلف طرح‌بندی سند، نزدیک یا دور از یکدیگر هستند. بنابراین، ترکیب توانایی پردازش زمینه چند مقیاسی به نفع شبکه است.

مجموعه داده

روش پیشنهادی در چالش خواندن قوی ICDAR 2019 بر روی مجموعه داده SROIE ارزیابی شده است و همچنین بر روی یک مجموعه داده خودساخته با 3 نوع تصویر سند اسکن شده است.

La مجموعه داده های ICDAR 2019 SROIE استفاده می شود که شامل 1000 تصویر رسید اسکن شده است. هر تصویر رسید شامل حدود چهار فیلد متنی کلیدی است، مانند نام کالا، قیمت واحد، تاریخ و هزینه کل. متن مشروح در مجموعه داده عمدتاً از ارقام و کاراکترهای انگلیسی تشکیل شده است.

مجموعه داده خودساخته شامل 4، 484 سند رسید اسپانیایی اسکن شده مشروح شده، از جمله رسید تاکسی، رسید سرگرمی غذا (ME) و رسید هتل، با 9 کلاس اطلاعات کلیدی مختلف است.

نتایج

عملکرد کلی با استفاده از دقت متوسط ​​(AP - و بر حسب دقت در هر کلاس در 9 کلاس اندازه‌گیری می‌شود.) و دقت متوسط ​​نرم (softAP) که در آن پیش‌بینی یک کلاس اطلاعات کلیدی درست تعیین می‌شود در صورتی که حقایق پایه مثبت باشد. به درستی پیش‌بینی می‌شوند حتی اگر برخی موارد مثبت کاذب در پیش‌بینی نهایی گنجانده شده باشد. تجزیه و تحلیل مشترک AP و softAP درک بهتری از عملکرد مدل ارائه می دهد.

نتایج را می توانید در جدول زیر مشاهده کنید.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

GCN برای VRD

پیچیدگی نمودار برای استخراج اطلاعات چندوجهی از اسناد بصری غنی

این مقاله یک مدل مبتنی بر پیچیدگی نمودار را برای ترکیب اطلاعات متنی و بصری ارائه شده در اسناد بصری غنی (VRD) معرفی می‌کند. تعبیه‌های نمودار برای خلاصه کردن زمینه یک بخش متن در سند آموزش داده می‌شوند و بیشتر با جاسازی‌های متن برای استخراج موجودیت ترکیب می‌شوند.

در این مقاله آنها یک سند را VRD می نامند و من به آن پایبند خواهم بود.

هر سند به‌عنوان نموداری از بخش‌های متن مدل‌سازی می‌شود، جایی که هر بخش متنی از موقعیت بخش و متن درون آن تشکیل شده است. نمودار شامل گره هایی است که بخش های متن را نشان می دهد و یال هایی که وابستگی های بصری مانند اشکال نسبی و فاصله بین دو گره را نشان می دهند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

جاسازی‌های گراف تولید شده توسط پیچیدگی نمودار، زمینه یک بخش متن را در سند خلاصه می‌کند، که بیشتر با جاسازی‌های متنی برای استخراج موجودیت با استفاده از یک مدل استاندارد BiLSTM-CRF ترکیب می‌شوند.

مدل

این مدل ابتدا با استفاده از چندین لایه پیچیدگی گراف، هر بخش متنی در سند را در قالب جاسازی گراف رمزگذاری می‌کند. تعبیه اطلاعات در بخش متن را با توجه به بافت بصری و متنی آن نشان می دهد. زمینه بصری چیدمان سند و موقعیت های نسبی هر بخش به بخش های دیگر است. بافت متنی مجموعه ای از اطلاعات متنی در سند است. این مدل یاد می‌گیرد که وزن‌های بالاتری را به متن‌های بخش‌های همسایه اختصاص دهد. سپس مقاله جاسازی‌های گراف را با جاسازی‌های متن ترکیب می‌کند و یک مدل استاندارد BiLSTM-CRF برای استخراج موجودیت اعمال می‌کند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

مجموعه داده

دو مجموعه داده دنیای واقعی استفاده می شود. آنها فاکتورهای مالیات بر ارزش افزوده (VATI) و رسیدهای خرید بین المللی (IPR) هستند. VATI از 3000 عکس آپلود شده توسط کاربر تشکیل شده است و به طور دقیق دارای 16 نهاد است. نهادهای نمونه عبارتند از نام خریدار/فروشنده، تاریخ و مبلغ مالیات. فاکتورها به زبان چینی هستند و از آنجایی که فاکتور استاندارد ملی است، یک قالب ثابت دارد.

IPR مجموعه داده ای از 1500 سند رسید اسکن شده به زبان انگلیسی است که دارای 4 نهاد دقیق است (شماره فاکتور، نام فروشنده، نام پرداخت کننده و مبلغ کل). 146 الگو برای رسید وجود دارد.

نتایج

امتیاز F1 برای ارزیابی عملکرد مدل در تمام آزمایش ها استفاده می شود. جدول زیر نتایج مربوط به 2 مجموعه داده را نشان می دهد.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

خط پایه I BiLSTM-CRF را برای هر بخش متن اعمال می کند، جایی که هر بخش متن یک جمله جداگانه است.

Baseline II مدل برچسب گذاری را برای بخش های متن به هم پیوسته اعمال می کند.

سریعتر-RCNN + AED

رویکرد یادگیری عمیق برای تشخیص رسید

این مقاله یک رویکرد یادگیری عمیق برای تشخیص رسیدهای اسکن شده ارائه می دهد. سیستم تشخیص دارای دو ماژول اصلی است: تشخیص متن بر اساس شبکه پیشنهادی متن کانکشنیست و تشخیص متن بر اساس رمزگذار-رمزگر مبتنی بر توجه. این سیستم 71.9 درصد از امتیاز F1 را برای کار تشخیص و شناسایی به دست آورد.

تشخیص متن

ساختار CTPN مشابه Faster R-CNN است، با افزودن لایه LSTM. مدل شبکه عمدتاً از سه بخش تشکیل شده است: استخراج ویژگی توسط VGG16، LSTM دو طرفه و رگرسیون جعبه مرزی.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

تشخیص متن

AED برای تشخیص خطوط متن استفاده می شود. AED دو ماژول اصلی دارد: DenseNet برای استخراج ویژگی‌ها از یک تصویر متنی و یک LSTM همراه با یک مدل توجه برای پیش‌بینی متن خروجی.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

مجموعه داده

از مجموعه داده SROIE 2019 استفاده شده است. آنها داده های آموزشی را به آموزش، اعتبار سنجی و آزمایش تقسیم کردند و به طور تصادفی 80 درصد رسیدها را برای آموزش، 10 درصد از رسیدها را برای اعتبارسنجی و بقیه را برای آزمایش انتخاب کردند. در نتیجه 500 رسید برای آموزش، 63 رسید برای اعتبار سنجی و 63 رسید برای آزمایش.

نتایج

برای تشخیص متن، کاغذ از Tightness-aware Intersection-over-Union (TIoU) برای تشخیص متن، کاغذ از F1، Precision و Recall استفاده می کند.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

جدول I نتیجه CTPN را با سه شرط نشان می دهد: CTPN در تصاویر اصلی. پیش پردازش + CTPN، پیش پردازش + CTPN + تأیید OCR. جدول 2 نتایج شبکه AED را نشان می دهد.

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

البته یک راه ساده تر و شهودی برای انجام این کار وجود دارد.


نیاز به یک قوی رسید OCR برای استخراج داده ها از رسیدها؟ نانو شبکه ها را بررسی کنید API OCR رسید!


OCR با Nanonets

به روز رسانی شماره 1: ما به تازگی خود را منتشر کردیم رسید OCR مدل از پیش آموزش دیده به https://app.nanonets.com سر بزنید و آزمایش را شروع کنید!

دیجیتالی سازی خودکار رسید با OCR و یادگیری عمیق

La Nanonets OCR API به شما امکان می دهد مدل های 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 اضافه شد.

تمبر زمان:

بیشتر از هوش مصنوعی و یادگیری ماشین