API на Adobe PDF Extract е мощен инструмент за получаване на информация от вашите PDF файлове. Това включва оформлението и стила на вашия PDF, таблични данни в лесен за използване CSV формат, изображения и необработен текст. Като се имат предвид всички неща, необработеният текст може да бъде най-малко интересният аспект на API. Една полезна възможност е да вземете необработения текст и да го предоставите на търсачките (вижте Използване на PDF файлове с Jamstack — Добавяне на търсене с извличане на текст). Но друга завладяваща възможност за работа с текст включва обработката на естествен език или НЛП.

Най-общо (много широко, вижте статията в Уикипедия за по-задълбочен контекст), НЛП е за разбиране на съдържанието на текста. Гласовите асистенти са чудесен пример за това в реалния свят. Това, което прави устройствата Alexa и Google Voice толкова мощни, е, че те не просто чуват какво казвате, но разбират намерението на казаното от вас. Това е различно от необработения текст.

Ако кажа „Работя за Adobe“, това е различно твърдение от „Живея в кирпичена къща“. Разбирането на разликите между една и съща дума изисква машинно обучение, изкуствен интелект и други думи, които само наистина умните хора разбират.

Организации, които се занимават с входящи PDF файлове или се занимават с голяма история на съществуващи документи, могат да използват комбинация от API за извличане на PDF и NLP, за да получат по-добра информация за това, което се съдържа в техните PDF файлове.

В тази статия ще ви преведем през пример, който демонстрира съвместната работа на тези две мощни функции. Нашето демонстрационно приложение ще сканира директория с PDF файлове. За всеки PDF файл първо ще извлече текста от PDF файла. След това ще отведе този текст до NLP API. И при двете операции можем да запазим резултатите за по-бърза обработка по-късно.

За нашия NLP API ние ще използваме услуга от Diffbot. Diffbot има множество API, но ние ще се съсредоточим върху тяхната услуга на „естествен език“. Техният API е доста лесен за използване, но предоставя изобилие от данни, включително:

  • Субекти или основно субекти на документ.
  • Типът на тези обекти, така че например едно име е обект, а типът е човек.
  • Факти, разкрити в документа, „Основателят на компанията така и така беше Джо Так и така.“
  • Настроения (колко отрицателно или положително е нещо).

API на Diffbot може също да бъде обучен с персонализирани данни, така че да може по-добре да анализира входа ви. Проверете техните документи за повече информация и техният бърз старт е чудесен пример. Те предоставят „двуседмичен пробен период“ и не изискват кредитна карта за регистрация.

Ето прост пример за това как да извикате техния API с помощта на Node.js:

Добре, нека изградим нашата демонстрация. Вече имаме папка с PDF файлове, така че общият ми процес ще бъде:

  • Вземете списък с PDF файлове.
  • За всеки вижте дали вече имам текста. Имайки PDF с име catsrule.pdf, ще потърся catsrule.txt.
  • Ако не го направя, използвайте нашия API за извличане, за да получите текста.
  • За всеки вижте дали вече имам резултатите от НЛП. Имайки PDF с име catsrule.pdf, ще потърся catsrule.json.

Ето кода, който представя тази логика, минус действителните имплементации на който и да е API (също премахнах изразите за изискване):

Чрез запазване на резултатите този скрипт може да се изпълнява многократно, когато се добавят нови PDF файлове. Сега нека разгледаме нашите API извиквания. Първо, getText:

В по-голямата си част това е взето направо от нашите Extract API документи. Нашият SDK връща ZIP файл, така че използваме NPM пакет (AdmZip), за да извлечем JSON резултата от ZIP файла. След това филтрираме текстовите елементи от нашия JSON резултат, за да създадем един голям текстов низ. Крайният резултат е — дадено име на PDF файл като вход, получаваме обратно текстов низ.

Сега нека да разгледаме кода за изпълнение на обработката на естествен език върху текста:

Това е почти идентично с предишния пример. Имайте предвид, че можете да промените стойността fields, за да промените какво прави Diffbot с вашия текст. Резултатът е впечатляващо голямо количество данни. Подобно на API за извличане на PDF, JSON може да бъде дълъг стотици редове. Ако искате да видите необработения резултат, можете да погледнете пример „тук“. Предупреждение: когато е форматирано, това са приблизително шестдесет и две хиляди реда данни.

И сега какво? Страхотен въпрос! Като бърза демонстрация реших, че би било хубаво да филтрирам NLP данните до списък с хора, споменати в PDF файла, както и категории. За хората погледнах върнатите същности. Ето един пример:

Обърнете внимание на стойността в allTypes, която указва, че това е човек. Ето пример за юридическо лице, което не е физическо лице, от малка компания във Вашингтон:

Категориите са малко по-прости, тъй като не се нуждаят от филтриране (освен уникалността):

Знаейки откъде да взема неща, написах скрипт, който сканира моите PDF директории и за всеки PDF се опита да „събере“ данните:

Както преди, премахнахме изразите за изискване. Крайният резултат от този скрипт е JSON файл с всеки PDF файл и списък с хора и категории. И за двете филтрираме до уникални стойности. (Това може да е проблематично за имена, разбира се, но предполагам, че шансът двама души с едно и също име в PDF е малък.)

С тези данни можем след това да създадем уеб приложение, което да го зареди и изобрази на екрана:

Кодът за уеб приложението не е много интересен, но ако искате да го видите или друга извадка от тази статия, можете да го намерите тук: https://github.com/cfjedimaster/document-services-demos /tree/main/article_support/nlp

Ако искате да изпробвате това сами, регистрирайте се за безплатна пробна версия на PDF Extract API и платете Diffbot за по-задълбочен поглед върху техните страхотни API!