Хочете отримати дані зі сканованих документів? Спробуй Нанонети™ просунутий OCR-сканер на основі AI видобувати та систематизувати інформацію з відскановані документи автоматично.
Вступ
У міру того як світ перейшов від паперів і рукописних документів до цифрових документів для зручності, важливість перетворення зображень і сканованих документів у значущі дані різко зросла.
Щоб задовольнити потребу у високоточному вилученні даних документів, численні дослідницькі установи та корпорації (наприклад, Google, AWS, Nanonets тощо) глибоко зосередилися на технологіях у сфері комп’ютерного зору та обробки природної мови (NLP).
Розквіт технологій глибокого навчання забезпечив гігантський стрибок у виді даних, які можна витягти; ми більше не обмежені лише вилученням тексту, а й інших структур даних, таких як таблиці та пари ключ-значення. Зараз багато рішень пропонують різноманітні продукти для задоволення потреб окремих осіб і власників компаній у вилученні даних документів.
Ця стаття розповідає про поточну технологію, яка використовується для вилучення даних зі сканованих документів, а потім коротку практичну інструкцію з Python. Ми також розглянемо деякі з популярних рішень на ринку, які надають найкращі пропозиції в цій галузі.
Що таке вилучення даних?
Вилучення даних — це процес перетворення неструктурованих даних у інформацію, яку можна інтерпретувати, за допомогою програм, щоб забезпечити подальшу обробку даних людьми. Тут ми перераховуємо кілька найпоширеніших типів даних, які витягуються зі сканованих документів.
Текстові дані
Найпоширенішим і найважливішим завданням при вилученні даних зі сканованих документів є вилучення тексту. Хоча цей процес здається простим, насправді дуже складний, оскільки скановані документи часто представлені у форматі зображень. Крім того, методи вилучення сильно залежать від типів тексту. У той час як текст присутній у щільних друкованих форматах більшу частину часу, здатність витягувати розріджений текст з менш добре відсканованих документів або з рукописних листів із різко різними стилями є однаково важливою. Такий процес дозволить програмам перетворювати зображення на машинно-кодований текст, де ми зможемо далі організовувати їх із неструктурованих даних (без певного форматування) у структуровані дані для подальшого аналізу.
таблиці
Табличні форми є найпопулярнішим підходом для зберігання даних, оскільки формат легко сприймається людським оком. Процес вилучення таблиць із відсканованих документів потребує технології, окрім визначення символів — необхідно виявити лінії та інші візуальні елементи, щоб виконати належне вилучення таблиці та далі перетворити цю інформацію на структуровані дані для подальших обчислень. Методи комп’ютерного зору (докладно описані в наступних розділах) широко використовуються для досягнення високої точності вилучення таблиць.
Пари ключ-значення
Альтернативним форматом, який ми часто використовуємо в документах для зберігання даних, є пари ключ-значення (KVP).
KVP — це, по суті, два елементи даних — ключ і значення — пов’язані разом як одне ціле. Ключ використовується як унікальний ідентифікатор для значення, яке потрібно отримати. Класичним прикладом KVP є словник, де словники є ключами, а відповідні визначення є значеннями. Хоча ці пари, як правило, непомічені, насправді дуже часто використовуються в документах: запитання в опитуваннях, такі як ім’я, вік і ціни товарів у рахунках-фактурах, неявно є KVP.
Однак, на відміну від таблиць, КВП часто існують у невідомих форматах і іноді навіть частково написані від руки. Наприклад, ключі можуть бути попередньо надруковані в коробках, а значення вказуються від руки під час заповнення форми. Таким чином, пошук структур, що лежать в основі для автоматичного вилучення KVP, є безперервним дослідницьким процесом навіть для найсучасніших установ і лабораторій.
цифри
Нарешті, також дуже важливо витягти або захоплення даних з цифр у відсканованому документі. Статистичні показники, такі як секторні діаграми та стовпчасті діаграми, часто містять важливу інформацію для документів. Хороший процес вилучення даних повинен мати можливість робити висновки з легенд і чисел, щоб частково витягувати дані з цифр для подальшого використання.
Хочете отримати дані зі сканованих документів? Дайте Наносети™ спін для більшої точності, більшої гнучкості, подальшої обробки та широкого набору інтеграцій!
Технології, що стоять за вилученням даних
Вилучення даних відбувається навколо двох основних процесів: оптичне розпізнавання символів (OCR) з наступною обробкою природної мови (НЛП).
Розпізнавання тексту – це процес перетворення текстових зображень у машинно-кодований текст, а останній – це аналіз слів для визначення значень. Часто разом із OCR додаються інші методи комп’ютерного зору, такі як виявлення прямокутників і рядків для вилучення вищезгаданих типів даних, таких як таблиці та KVP, для більш повного вилучення.
Основні вдосконалення, що стоять за конвеєром вилучення даних, тісно пов’язані з досягненнями в глибокому навчанні, які зробили великий внесок у галузі комп’ютерного зору та обробки природної мови (NLP).
Що таке глибоке навчання?
Глибоке навчання відіграє важливу роль у ажіотажі ери штучного інтелекту та постійно висувається на передній план у численних програмах. У традиційній інженерії наша мета полягає в тому, щоб спроектувати систему/функцію, яка генерує вихідні дані з даного входу; глибоке навчання, з іншого боку, покладається на вхідні та вихідні дані, щоб знайти проміжний зв’язок, який можна поширити на нові невидимі дані через т.зв. нейронної мережі.
Нейронна мережа, або багатошаровий перцептрон (MLP), це архітектура машинного навчання, натхненна тим, як навчається людський мозок. Мережа містить нейрони, які імітують біологічні нейрони та «активуються», коли отримують іншу інформацію. Набори нейронів утворюють шари, а кілька шарів складаються разом, щоб утворити мережу, яка служить цілям прогнозування кількох форм (наприклад, класифікації зображень або обмежувальних рамок для виявлення об’єктів).
У сфері комп'ютерного зору широко використовується різновид нейронних мереж — згорткові нейронні мережі. (CNN). Замість традиційних шарів CNN використовує згорткові ядра, які ковзають через тензори (або вектори великої розмірності) для виділення ознак. Зрештою, разом із традиційними мережевими рівнями, CNN дуже успішні у задачах, пов’язаних із зображеннями, а також стали основою для вилучення OCR та виявлення інших функцій.
З іншого боку, НЛП покладається на інший набір мереж, який зосереджується на даних часових рядів. На відміну від зображень, де одне зображення не залежить одне від іншого, передбачення тексту може значно покращитися, якщо також враховувати слова, що передують або після. За останні кілька років сімейство мереж, а саме довгі короткочасні спогади (LSTM), який приймає попередні результати як вхідні дані для прогнозування поточних результатів. Двосторонні LSTM також часто використовувалися для покращення результату прогнозування, де враховувалися як попередні, так і після результатів. Однак в останні роки концепція трансформаторів, які використовують механізм уваги, починає зростати через його більшу гнучкість, що призводить до кращих результатів, ніж традиційні мережі, що обробляють послідовні часові ряди.
Програми вилучення даних
Основною метою вилучення даних є перетворення даних із неструктурованих документів у структуровані формати, у яких високоточне отримання тексту, малюнків і структур даних може бути дуже корисним для числового та контекстного аналізу. Ці аналізи можуть бути дуже корисними, особливо для підприємств:
Business
Бізнес-корпорації та великі організації щодня мають справу з тисячами документів подібного формату — великі банки отримують численні ідентичні заявки, а дослідницькі групи мають аналізувати купи форм, щоб провести статистичний аналіз. Таким чином, автоматизація початкового етапу вилучення даних з документів значно зменшує надмірність людських ресурсів і дозволяє працівникам зосередитися на аналізі даних і перегляді заявок замість введення інформації.
- Перевірка додатків — Компанії отримують безліч заявок, написаних від руки або лише за допомогою форм заявок. У більшості випадків ці програми можуть супроводжуватися особистими ідентифікаторами з метою перевірки. Відскановані документи, що посвідчують особу, як-от паспорти чи картки, зазвичай надходять партіями однакового формату. Таким чином, добре написаний екстрактор даних може швидко перетворити дані (тексти, таблиці, малюнки, 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')
Для отримання додаткової інформації щодо коду ви можете перевірити їхній офіційний сайт документація.
Простими словами, код витягує такі дані, як тексти та обмежувальні рамки, із заданого зображення. Незважаючи на те, що він досить корисний, механізм не є таким потужним, як ті, що пропонуються передовими рішеннями, завдяки їхній значній обчислювальній потужності для навчання.
Використання API документів Google
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'])
Зрештою, штучний інтелект Google для документів дозволяє видобувати численні відомості з документів із високою точністю. Крім того, послуга також пропонується для певних цілей, включаючи вилучення тексту для звичайних і диких зображень.
Будь ласка зверніться до тут для більш.
Поточні рішення, що пропонують вилучення даних
Окрім великих корпорацій із API для вилучення даних документів, існує кілька рішень, які забезпечують високу точність PDF OCR послуги. Ми представляємо кілька варіантів PDF OCR, які спеціалізуються на різних аспектах, а також деякі нещодавні дослідницькі прототипи, які, здається, дають багатообіцяючі результати*:
*Додаткова примітка: існує кілька служб OCR, які націлені на такі завдання, як зображення в дикій природі. Ми пропустили ці служби, оскільки наразі зосереджені лише на читанні документів PDF.
- API Google — Google, як один із найбільших постачальників онлайн-послуг, пропонує приголомшливі результати у вилученні документів за допомогою новаторської технології комп’ютерного зору. Можна користуватися їхніми послугами безкоштовно, якщо використання досить низьке, але ціна зростає зі збільшенням викликів API.
- Глибокий читач — Deep Reader — це дослідницька робота, опублікована на конференції ACCV 2019. Вона включає в себе кілька найсучасніших мережевих архітектур для виконання таких завдань, як зіставлення документів, пошук тексту та зменшення шуму на зображеннях. Існують додаткові функції, такі як таблиці та вилучення пар ключ-значення, які дозволяють отримувати та зберігати дані в упорядкованому порядку.
- Nanonets™ — Завдяки висококваліфікованій команді глибокого навчання Nanonets™ PDF OCR повністю не залежить від шаблонів і правил. Таким чином, Nanonets™ може працювати не тільки з певними типами PDF-файлів, але також може бути застосований до будь-якого типу документа для пошуку тексту.
Хочете отримати дані зі сканованих документів? Дайте Наносети™ спін для більшої точності, більшої гнучкості, подальшої обробки та широкого набору інтеграцій!
Висновок
На завершення ця стаття представляє детальне пояснення щодо вилучення даних зі сканованих документів, включаючи виклики, що стоять за цим, і технологію, необхідну для цього процесу.
Представлено два навчальні посібники з різними методами, а також представлено поточні рішення, які пропонують це з коробки, також представлено для довідки.
- 2019
- МЕНЮ
- абсолют
- рахунки
- точний
- Achieve
- доповнення
- Додатковий
- просунутий
- аванси
- AI
- алгоритми
- ВСІ
- вже
- альтернатива
- аналіз
- аналіз
- Інший
- API
- Інтерфейси
- додаток
- застосування
- підхід
- архітектура
- навколо
- стаття
- штучний
- штучний інтелект
- увагу
- Автоматизація
- доступний
- AWS
- фон
- Банк
- Банки
- основа
- буття
- КРАЩЕ
- За
- найбільший
- border
- Box
- будувати
- бізнес
- підприємства
- Cards
- випадків
- готівкові гроші
- грошовий потік
- певний
- проблеми
- складні
- Чарти
- Введіть дані:
- classic
- хмара
- CNN
- код
- Приходити
- загальний
- Компанії
- компанія
- повністю
- завершення
- всеосяжний
- обчислення
- комп'ютер
- концепція
- конференція
- довіра
- підключений
- постійно
- містить
- внесок
- зручність
- Зручний
- конверсій
- Core
- корпорації
- Відповідний
- може
- вирішальне значення
- Поточний
- В даний час
- клієнт
- Клієнти
- дані
- обробка даних
- зберігання даних
- угода
- описаний
- дизайн
- деталь
- Виявлення
- різний
- важкий
- цифровий
- документація
- легко
- ефективність
- співробітників
- двигун
- Машинобудування
- особливо
- по суті
- Оцінки
- і т.д.
- оцінка
- Події
- приклад
- Крім
- експеримент
- дослідити
- обширний
- Виписки
- сім'я
- особливість
- риси
- зворотний зв'язок
- Поля
- виявлення
- Перший
- Гнучкість
- потік
- Сфокусувати
- увагу
- фокусується
- фокусування
- після
- передній край
- форма
- формат
- форми
- Безкоштовна
- французька
- Виконати
- Повний
- далі
- мета
- добре
- великий
- значно
- Обробка
- практичний
- голова
- охорона здоров'я
- healthcare industry
- корисний
- тут
- Високий
- вище
- дуже
- історія
- лікарні
- Як
- How To
- Однак
- HTTPS
- людина
- Людськими ресурсами
- Людей
- зображення
- значення
- важливо
- удосконалювати
- включати
- У тому числі
- Дохід
- Augmenter
- індивідуальний
- осіб
- промисловості
- промисловість
- інформація
- вхід
- натхненний
- Інтелект
- питання
- IT
- робота
- ключ
- ключі
- Labs
- мова
- мови
- великий
- провідний
- УЧИТЬСЯ
- вивчення
- Лінія
- список
- Довго
- машина
- навчання за допомогою машини
- основний
- Більшість
- людина
- манера
- ринок
- матч
- узгодження
- медичний
- методика
- більше
- найбільш
- Найбільш популярний
- переміщення
- множинний
- а саме
- Природний
- потреби
- мережу
- мереж
- нормальний
- номера
- численний
- пропонувати
- запропонований
- пропонує
- Пропозиції
- Пропозиції
- офіційний
- постійний
- онлайн
- операція
- Опції
- порядок
- організації
- Організований
- Інше
- Власники
- Учасники
- оплата
- виконанні
- period
- персонал
- Піонерський
- популярний
- потенціал
- влада
- передбачати
- прогноз
- представити
- досить
- попередній
- price
- процес
- процеси
- обробка
- Продукти
- програма
- програми
- перспективний
- забезпечувати
- забезпечення
- цілей
- швидко
- RE
- читач
- читання
- отримати
- примирення
- облік
- зменшити
- про
- відносини
- запросити
- вимагати
- вимагається
- Вимагається
- дослідження
- ресурси
- відповідь
- результати
- повертати
- ризики
- сканування
- seconds
- обслуговування
- Послуги
- комплект
- кілька
- Короткий
- короткий термін
- аналогічний
- простий
- з
- Розмір
- Софтвер
- solid
- Рішення
- деякі
- спеціалізований
- Спін
- впроваджений
- заяви
- статистичний
- зберігання
- потік
- сильний
- структурований
- істотний
- успішний
- Підтриманий
- Огляд
- цільове
- завдання
- команда
- методи
- Технології
- Технологія
- тест
- світ
- отже
- тисячі
- через
- час
- times
- разом
- Тон
- до
- традиційний
- Навчання
- навчальні посібники
- Типи
- розуміти
- створеного
- використання
- зазвичай
- значення
- різний
- перевірка
- вид
- бачення
- Чи
- в той час як
- в
- без
- слова
- Work
- робочі
- світ
- б
- XML
- років