20.1 C
نیویورک

استخراج داده ها از اسناد اسکن شده

تاریخ:

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


معرفی

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

برای همگام شدن با نیاز به استخراج داده‌های اسنادی بسیار دقیق، بسیاری از امکانات تحقیقاتی و شرکت‌ها (به عنوان مثال، گوگل، AWS، نانو شبکه‌ها و غیره) عمیقاً بر روی فناوری‌های حوزه‌های بینایی رایانه و پردازش زبان طبیعی (NLP) تمرکز کردند.

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

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

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

داده های متنی

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

💡

آیا می خواهید الگوریتم های یادگیری عمیق را که چنین فرآیندهایی را تقویت می کنند، درک کنید؟ سری به ما بزنید وبلاگ LayoutLM توضیح داده شده است

جداول

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

استخراج جداول از اسناد اسکن شده
استخراج جداول از اسناد اسکن شده

جفت های کلید-مقدار

یک قالب جایگزین که ما اغلب در اسناد برای ذخیره سازی داده ها استفاده می کنیم، جفت های کلید-مقدار (KVPs) است.

جفت‌های ارزش کلیدی را از اسناد اسکن شده استخراج کنید
جفت‌های ارزش کلیدی را از اسناد اسکن شده استخراج کنید

KVP ها اساساً دو آیتم داده - یک کلید و یک مقدار - هستند که به عنوان یکی با هم مرتبط هستند. کلید به عنوان یک شناسه منحصر به فرد برای مقداری که باید بازیابی شود استفاده می شود. یک مثال کلاسیک KVP فرهنگ لغت است که در آن واژگان کلید و تعاریف مربوطه مقادیر هستند. این جفت‌ها، در حالی که معمولاً مورد توجه قرار نمی‌گیرند، در واقع به طور مکرر در اسناد استفاده می‌شوند: سؤالات در نظرسنجی‌ها مانند نام، سن و قیمت اقلام در فاکتورها همگی به طور ضمنی KVP هستند.

با این حال، بر خلاف جداول، KVP ها اغلب در قالب های ناشناخته وجود دارند و گاهی اوقات حتی تا حدی دست نویس هستند. به عنوان مثال، کلیدها می توانند از قبل در جعبه ها چاپ شوند و هنگام تکمیل فرم، مقادیر با دست نوشته می شوند. بنابراین، یافتن ساختارهای زیربنایی برای انجام خودکار استخراج KVP یک فرآیند تحقیقاتی مداوم حتی برای پیشرفته‌ترین امکانات و آزمایشگاه‌ها است.

آمار و ارقام

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


به دنبال استخراج داده از اسناد اسکن شده هستید؟ نانو شبکه بدهیدچرخشی برای دقت بالاتر، انعطاف پذیری بیشتر، پس پردازش، و مجموعه گسترده ای از ادغام!


استخراج داده ها حول دو فرآیند اصلی می چرخد: تشخیص نوری کاراکتر (OCR) به دنبال آن پردازش زبان طبیعی (NLP).

استخراج OCR فرآیند تبدیل تصاویر متنی به متن کدگذاری شده ماشینی است، در حالی که دومی تجزیه و تحلیل کلمات برای استنتاج معانی است. اغلب با OCR سایر تکنیک های بینایی کامپیوتری مانند تشخیص جعبه و خط برای استخراج انواع داده های ذکر شده مانند جداول و KVP برای استخراج جامع تر همراه است.

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

یادگیری عمیق چیست؟

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

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

یادگیری عمیق

در زمینه بینایی کامپیوتر، نوعی از تنوع شبکه عصبی به شدت استفاده می شود - شبکه های عصبی کانولوشنال (سی ان ان). به جای لایه‌های سنتی، یک CNN از هسته‌های کانولوشنی استفاده می‌کند که از طریق تانسورها (یا بردارهای با ابعاد بالا) برای استخراج ویژگی می‌چرخند. همراه با لایه های شبکه سنتی در پایان، CNN ها در کارهای مرتبط با تصویر بسیار موفق هستند و پایه و اساس استخراج OCR و تشخیص سایر ویژگی ها را تشکیل می دهند.

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

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

کسب و کار

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

  • تأیید برنامه ها - شرکت‌ها تعداد زیادی درخواست، چه به صورت دست‌نویس یا فقط از طریق فرم‌های درخواست دریافت می‌کنند. در بیشتر مواقع، این برنامه‌ها ممکن است با شناسه‌های شخصی برای اهداف راستی‌آزمایی همراه شوند. اسناد اسکن شده شناسنامه مانند گذرنامه یا کارت معمولاً به صورت دسته‌ای با فرمت‌های مشابه ارائه می‌شوند. بنابراین، یک استخراج‌کننده داده به‌خوبی می‌تواند داده‌ها (متون، جداول، شکل‌ها، KVP) را به سرعت به متون قابل فهم ماشین تبدیل کند، که می‌تواند به طور قابل‌توجهی ساعات کار را در این وظایف کاهش دهد و به جای استخراج، بر انتخاب برنامه تمرکز کند.
  • تطبیق پرداخت - تطبیق پرداخت فرآیند مقایسه صورت‌های بانکی برای اطمینان از تطابق اعداد بین حساب‌ها است که به شدت حول استخراج داده‌ها از اسناد می‌چرخد - یک موضوع چالش برانگیز برای یک شرکت با اندازه قابل توجه و منابع مختلف جریان درآمد. استخراج داده‌ها می‌تواند این فرآیند را تسهیل کند و به کارمندان اجازه دهد تا روی داده‌های معیوب تمرکز کنند و رویدادهای تقلبی احتمالی در مورد جریان نقدی را کشف کنند.
  • تجزیه و تحلیل آماری - بازخورد مشتریان یا شرکت‌کنندگان آزمایش توسط شرکت‌ها و سازمان‌ها برای بهبود محصولات و خدمات خود استفاده می‌شود و ارزیابی بازخورد جامع معمولاً به تجزیه و تحلیل آماری نیاز دارد. با این حال، داده‌های نظرسنجی ممکن است در قالب‌های متعددی وجود داشته باشد یا در بین متن‌هایی با قالب‌های مختلف پنهان باشد. استخراج داده‌ها می‌تواند فرآیند را با اشاره به داده‌های واضح از اسناد به صورت دسته‌ای آسان‌تر کند، روند یافتن فرآیندهای مفید را آسان کند و در نهایت کارایی را افزایش دهد.
  • به اشتراک گذاری سوابق گذشته - از مراقبت های بهداشتی گرفته تا تغییر خدمات بانکی، صنایع بزرگ اغلب به اطلاعات مشتریان جدیدی نیاز دارند که ممکن است قبلاً در جاهای دیگر وجود داشته باشد. به عنوان مثال، بیمار به دلیل جابجایی بیمارستان، ممکن است سوابق پزشکی از قبل موجود داشته باشد که می تواند برای بیمارستان جدید مفید باشد. در چنین مواردی، یک نرم افزار استخراج داده خوب به کار می آید، زیرا تنها چیزی که لازم است این است که فرد یک تاریخچه اسکن شده از سوابق را به بیمارستان جدید بیاورد تا به طور خودکار تمام اطلاعات را پر کند. این نه تنها راحت است، بلکه می تواند از خطرات گسترده به ویژه در صنعت مراقبت های بهداشتی که سوابق مهم بیماران نادیده گرفته می شود، جلوگیری کند.

به دنبال استخراج داده از اسناد اسکن شده هستید؟ نانو شبکه بدهیدچرخشی برای دقت بالاتر، انعطاف پذیری بیشتر، پس پردازش، و مجموعه گسترده ای از ادغام!


آموزش

برای ارائه یک دید واضح تر در مورد نحوه انجام استخراج داده ها، ما دو مجموعه روش را برای انجام استخراج داده ها از اسناد اسکن نشان می دهیم.

ساختمان از ابتدا

می توان یک موتور OCR استخراج داده ساده را از طریق موتور PyTesseract به شرح زیر ساخت:

try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

# If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:Program Files (x86)Tesseract-OCRtesseract'

# Simple image to string
print(pytesseract.image_to_string(Image.open('test.png')))

# List of available languages
print(pytesseract.get_languages(config=''))

# French text image to string
print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra'))

# In order to bypass the image conversions of pytesseract, just use relative or absolute image path
# NOTE: In this case you should provide tesseract supported images or tesseract will return error
print(pytesseract.image_to_string('test.png'))

# Batch processing with a single file containing the list of multiple image file paths
print(pytesseract.image_to_string('images.txt'))

# Timeout/terminate the tesseract job after a period of time
try:
    print(pytesseract.image_to_string('test.jpg', timeout=2)) # Timeout after 2 seconds
    print(pytesseract.image_to_string('test.jpg', timeout=0.5)) # Timeout after half a second
except RuntimeError as timeout_error:
    # Tesseract processing is terminated
    pass

# Get bounding box estimates
print(pytesseract.image_to_boxes(Image.open('test.png')))

# Get verbose data including boxes, confidences, line and page numbers
print(pytesseract.image_to_data(Image.open('test.png')))

# Get information about orientation and script detection
print(pytesseract.image_to_osd(Image.open('test.png')))

# Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
with open('test.pdf', 'w+b') as f:
    f.write(pdf) # pdf type is bytes by default

# Get HOCR output
hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr')

# Get ALTO XML output
xml = pytesseract.image_to_alto_xml('test.png')

برای کسب اطلاعات بیشتر در مورد کد، می توانید رسمی آنها را بررسی کنید مستندات.

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

با استفاده از Google Document API



def async_detect_document(gcs_source_uri, gcs_destination_uri):
"""OCR with PDF/TIFF as source files on GCS"""
    import json
    import re
    from google.cloud import vision
    from google.cloud import storage
    # Supported mime_types are: 'application/pdf' and 'image/tiff'
    mime_type = 'application/pdf'

    # How many pages should be grouped into each json output file.
    batch_size = 2

    client = vision.ImageAnnotatorClient()

    feature = vision.Feature(
        type_=vision.Feature.Type.DOCUMENT_TEXT_DETECTION)

    gcs_source = vision.GcsSource(uri=gcs_source_uri)
    input_config = vision.InputConfig(
        gcs_source=gcs_source, mime_type=mime_type)

    gcs_destination = vision.GcsDestination(uri=gcs_destination_uri)
    output_config = vision.OutputConfig(
        gcs_destination=gcs_destination, batch_size=batch_size)

    async_request = vision.AsyncAnnotateFileRequest(
        features=[feature], input_config=input_config,
        output_config=output_config)

    operation = client.async_batch_annotate_files(
        requests=[async_request])

    print('Waiting for the operation to finish.')
    operation.result(timeout=420)

    # Once the request has completed and the output has been
    # written to GCS, we can list all the output files.
    storage_client = storage.Client()

    match = re.match(r'gs://([^/]+)/(.+)', gcs_destination_uri)
    bucket_name = match.group(1)
    prefix = match.group(2)

    bucket = storage_client.get_bucket(bucket_name)

    # List objects with the given prefix.
    blob_list = list(bucket.list_blobs(prefix=prefix))
    print('Output files:')
    for blob in blob_list:
        print(blob.name)

    # Process the first output file from GCS.
    # Since we specified batch_size=2, the first response contains
    # the first two pages of the input file.
    output = blob_list[0]

    json_string = output.download_as_string()
    response = json.loads(json_string)

    # The actual response for the first page of the input file.
    first_page_response = response['responses'][0]
    annotation = first_page_response['fullTextAnnotation']

    # Here we print the full text from the first page.
    # The response contains more information:
    # annotation/pages/blocks/paragraphs/words/symbols
    # including confidence scores and bounding boxes
    print('Full text:n')
    print(annotation['text'])

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

لطفا به اینجا کلیک نمایید برای اطلاعات بیشتر.

علاوه بر شرکت‌های بزرگ با API برای استخراج داده‌های اسناد، راه‌حل‌های متعددی وجود دارد که بسیار دقیق هستند PDF OCR خدمات. ما چندین گزینه از PDF OCR را ارائه می دهیم که در جنبه های مختلف تخصصی هستند، و همچنین برخی از نمونه های اولیه تحقیقاتی اخیر که به نظر می رسد نتایج امیدوارکننده ای ارائه می دهند *:

*نکته جانبی: چندین سرویس OCR وجود دارد که برای کارهایی مانند تصاویر در طبیعت هدف قرار می گیرند. ما از این خدمات صرف نظر کردیم زیرا در حال حاضر فقط بر خواندن اسناد PDF تمرکز می کنیم.

  • Google API — به عنوان یکی از بزرگترین ارائه دهندگان خدمات آنلاین، گوگل نتایج خیره کننده ای را در استخراج اسناد با فناوری بینایی کامپیوتری پیشگام خود ارائه می دهد. اگر استفاده بسیار کم باشد، می توانید از خدمات آنها به صورت رایگان استفاده کنید، اما با افزایش تماس های API، قیمت آن افزایش می یابد.
  • خواننده عمیق — Deep Reader یک کار تحقیقاتی است که در کنفرانس ACCV 2019 منتشر شده است. چندین معماری شبکه پیشرفته را برای انجام وظایفی مانند تطبیق سند، بازیابی متن و حذف نویز تصاویر. ویژگی های اضافی مانند جداول و استخراج جفت کلید-مقدار-کلید وجود دارد که امکان بازیابی و ذخیره داده ها را به شیوه ای سازمان یافته فراهم می کند.
  • نانو شبکه ها - با یک تیم یادگیری عمیق بسیار ماهر، Nanonets™ PDF OCR کاملاً مستقل از الگو و قانون است. بنابراین، Nanonets نه تنها می‌تواند روی انواع خاصی از فایل‌های PDF کار کند، بلکه می‌تواند روی هر نوع سندی برای بازیابی متن نیز اعمال شود.
نانو شبکه ها - استخراج داده ها از اسناد اسکن شده
نانو شبکه ها – استخراج داده ها از اسناد اسکن شده 

به دنبال استخراج داده از اسناد اسکن شده هستید؟ نانو شبکه بدهیدچرخشی برای دقت بالاتر، انعطاف پذیری بیشتر، پس پردازش، و مجموعه گسترده ای از ادغام!


نتیجه

در پایان، این مقاله توضیح کاملی در مورد استخراج داده ها از اسناد اسکن شده، از جمله چالش های پشت آن و فناوری مورد نیاز برای این فرآیند ارائه می دهد.

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

  • Coinsmart. بهترین صرافی بیت کوین و کریپتو اروپا.اینجا کلیک کنید
  • پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
  • Source: https://nanonets.com/blog/extract-data-scanned-documents/

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

مقالات مرتبط

نقطه_img

مقاله های اخیر

نقطه_img