📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Docling in Action: Parse Any Document with Ease!

Codewello9:33

Transcription

Вы когда-нибудь сталкивались с трудностями при извлечении данных из PDF-документов, документов Word или сложной документации? Я сталкивался, особенно когда дело касалось отсканированного документа и изображения, скрытого внутри PDF. Представляем Dockling, мощную новую библиотеку IBM для парсинга документов. Этот инструмент выходит за рамки простого извлечения текста. В то время как другие инструменты борются с базовым извлечением текста, Dockling фактически видит и понимает изображения внутри ваших документов. И вот что делает его действительно особенным: он делает все это на вашем процессоре, поэтому дорогостоящие GPU не требуются.

В этом видео мы запустим и установим Dockling локально и используем его, чтобы показать вам, как извлекать структурированные данные из любой документации, которая у вас есть, обрабатывать встроенные изображения и создавать небольшую, но быструю систему RAG (Retrieval-Augmented Generation) с использованием LangChain и модели Grok-Llama 3 7B. Итак, давайте приступим.

Первое, что нам нужно сделать перед установкой чего-либо, — это создать среду с помощью `python -m venv`. Вы можете назвать ее как угодно. Я могу назвать свою `pdf_docs`. Возможно, я изменю имя и нажму Enter. Сейчас она создана. Вы можете активировать ее, войдя в папку вашей среды, затем в `scripts`, затем в файл `activate`. В моем случае, поскольку это Windows, это `activate.bat`. И сейчас она активирована. Вы узнаете, что она активирована, увидев это имя среды перед самой командной строкой.

И теперь, находясь в нашей активированной среде, мы можем написать `pip install dockling` и нажать Enter, и пусть он установит все, что ему нужно. Теперь он закончил установку всего, что ему было нужно. Мы можем прямо сейчас начать писать код. Но перед этим я хочу, чтобы вы зашли и взяли PDF для тестирования с этой библиотекой. Вы также можете использовать HTML-страницы. Это PDF, который я собираюсь использовать. Он содержит изображения и текст, как вы можете видеть здесь. Это изображения, а это также своего рода таблица здесь. Я написал несколько файлов и поместил PDF в папку, которую я создал. У меня есть файл `.env` и файл `readme` для кода. Когда вы зайдете онлайн на GitHub, этот файл очень простой и базовый. Все, что он делает, это парсит PDF и помещает его в текстовый файл под названием `conversion_result`. Вы можете назвать его как угодно, это не имеет значения. Но что имеет значение, так это то, насколько просто получить результат очень быстро.

Вам нужен исходный файл, файл, который вам нужно преобразовать, документ-конвертер, который вы получаете от самого Dockling, вызывая или, по сути, используя конвертер для преобразования файла, который у вас есть. И вот как вы можете получить Markdown, и вы также можете получить его в формате JSON. И чтобы получить его в формате JSON, вместо использования `export_to_markdown` используйте `export_to_dict` — словарь, который является своего рода объектом JSON, который вы можете получить. И я думаю, вы можете использовать это, когда хотите сохранить его в базе данных или таблице. По сути, есть и другие опции, такие как `export_to_text` или `export_to_document_tokens` и `to_intended_text`. Но давайте придерживаться основных: Markdown и JSON документации.

Давайте запустим это и посмотрим на результат, который мы получим. Когда вы запускаете его в первый раз, установка OCR-движка, который он использует, займет несколько минут. И я покажу вам два разных движка, которые он использует. Но я получил этот красивый файл `conversion_result.md` в формате Markdown. Он сохранил тот же текст с тем же форматированием, что облегчит чтение для человеческого глаза. И одна из самых крутых вещей в Dockling при парсинге таблиц, как эта здесь, заключается в том, что он сохранит тот же формат, что и PDF, точно. И это действительно таблица, которую он увидел внутри изображений. Вот почему я сказал вам в начале видео, что эта библиотека потрясающая. Она посмотрела на эту таблицу внутри этого изображения и смогла разобрать ее в этот формат. Это просто. И здесь еще одна таблица, на самом деле она намного больше. Эта таблица на самом деле имеет свое собственное большое изображение. Оно здесь. Я думаю, это массивный стол. И весь этот результат, который вы видите в терминале, на самом деле является JSON-выводом результата, который мы получили. Но поэтому я сказал вам, мне не нужен JSON, мне нужен Markdown, и я могу поделиться им и использовать его с LangChain. И это мой следующий шаг.

Но прежде чем мы построим RAG, я хочу показать вам, как этот тип библиотеки работает в фоновом режиме. Когда мы даем ему PDF, как мы сделали, он разобьет его на разные страницы: страница 1, страница 2, страница 3. Для каждой страницы он будет выполнять OCR, используя движок EasyOCR, и сделает еще один шаг, выполнив анализ макета. Это даст нам идеальный формат текста в виде Markdown. И, как вы видели, если в изображении есть таблица, он сохранит ту же структуру таблицы, которая есть в PDF. Затем он объединит все и даст нам результат в виде JSON, Markdown или текста. Вот почему эта библиотека потрясающая.

Теперь давайте быстро взглянем на код. У меня есть файл `.env` внутри `GROQ_API_KEY`. Вы поместите его туда. Вы можете получить свой API-ключ от Grok бесплатно, зайдя на `console.groq.com/keys`. И там вы можете создать новый API-ключ для этого кода.

А теперь давайте построим RAG — Dockling с LangChain. Нам нужен `langchain-community`, нам нужен `langchain-groq`, потому что мы собираемся подключить его к бесплатному API Grok. Нам, конечно, нужны `langchain-sentence-transformers` и `faiss-cpu`, и, конечно, `python-dotenv`.

И теперь давайте запустим этот файл RAG. У меня здесь все необходимые импорты. Я создал несколько функций, которые будут обрабатывать файл. Мы собираемся поместить файл в терминал, и функция возьмет его и разобьет на 1000 частей. Будут перекрытия для создания вложений, и она будет обрабатывать разделение документа с помощью очень маленькой модели вложений Hugging Face, которая работает на процессоре и называется `all-MiniLM`. А `device` от Facebook будет обрабатывать вложения документации для нас.

У меня здесь есть шаблон подсказки, который будет передаваться Llama, чтобы, по сути, дать нам ответ на вопрос, который у нас есть. Мы передадим ему контекст, то есть извлеченные данные из базы данных вложений, и вопрос, который у нас есть, и он даст нам ответ. И я здесь использую `ChatGroq` с моделью `Llama-3-70b` с температурой ноль и использую `RetrievalQA` из `LangChain`. Я передаю ему большую языковую модель, тип цепочки и что она делает, и сколько ключевых слов нам нужно извлечь из базы данных. И, наконец, основная функция, которая запустит все. По сути, она будет обрабатывать все: входные данные, которые мы ей передадим, загрузку API-ключа и выдачу ошибки, если он не существует, и обработку ввода пути к файлу, который мы передадим в терминал. И если он неправильный, он выдаст вам ошибку. И, наконец, если все сработало правильно, вы зададите вопрос, и он даст вам ответ в конце.

Итак, давайте посмотрим на это в действии. Первое, что нам нужно ввести, — это имя файла, которое у нас есть. Имя файла я изменил на `dockling_text.txt`, и я могу поместить его сюда. Первое, что произойдет, это, по сути, загрузка модели вложений Hugging Face. Но у меня уже есть это кэшировано в моей системе. Для вас это займет некоторое время для загрузки. Это очень маленькая модель.

А теперь для второго ввода он спрашивает вопрос. Я спрошу его: "Что такое Dockling и что он делает?" и нажму Enter. И он даст мне чрезвычайно быстрый ответ. Вот что Dockling предлагает сегодня: преобразование PDF-документа в JSON или Markdown. Правильно. Dockling разработан для обеспечения легкого расширения библиотеки моделей и конвейеров в будущем. И он дает мне информацию о конвейере, и у него есть этот приятный формат: один, два, три, очень легко.

Давайте зададим ему еще один вопрос. И вот ответ на мой второй вопрос: "Кто создал Dockling?" Ответ: "Я не знаю". Он не упоминает, кто создал Dockling. Упоминает "мы" и "наш" в некоторых местах, но не указывает конкретное имя или организацию как создателя Dockling. Это хороший ответ, потому что он дает нам что-то вроде: "Эй, я не понимаю, у меня нет информации об этом".

Так что это очень простой RAG, я знаю, но я хотел показать вам его в действии, как использовать его с Dockling. Это все для этого видео. Если вы нашли это видео уважительным к вашему времени и предоставили ценную информацию, пожалуйста, нажмите кнопку "Нравится" и "Подписаться". Это очень поможет моему каналу. Я также оставлю глупый комментарий для алгоритма, он еще больше продвинет видео. Все коды, которые я написал, и PDF, и ссылки вы найдете ниже, либо в описании видео, либо в первом комментарии. Спасибо за просмотр этого видео и до встречи в следующем.