🚀 Pro-сообщество тут (там даже есть исходный код этих автоматизаций):
https://t.me/iishenka_pro_bot
⭐️ Бесплатные материалы из этого видео тут:
https://t.me/+W1SnvvkcV6A3NWMy
Следующее видео:
https://youtu.be/DQNzT3DOvew
В этом видео я расскажу, как настроить себе локальный парсер для документов Docling.
Что особенного в этом видео?
Мы не только изучим архитектуру и методы работы Docling, но и построим вместе парсер, который превращает таблицы и графики из документов в чистый Markdown абсолютно локально и бесплатно.
🔥 Независимо от того, работаете ли вы с AI-агентами или только начинаете осваивать автоматизации в n8n, этот урок поможет вам овладеть процессом настройки ИИ для любых задач.
💡 Не забудьте поставить лайк и подписаться, чтобы не пропустить новые уроки по n8n и AI-агентам. Давайте сделаем AI-автоматизации простыми! 🙌
Я — Илья Бовкунов, основатель и СЕО Sendforsign — это компания, занимающаяся AI-автоматизацией договоров и документооборота. В прошлом был Директором по продукту и продуктовому дизайну в международных AI-стартапах.
Позвать в подкаст или предложить другое сотрудничество aiiszdes@gmail.com
Не забудьте поставить лайк, подписаться и нажать на колокольчик, чтобы не пропустить новые видео об AI-агентах и автоматизациях!
Друзья, всем привет. Когда мы говорим про использование нейронок для наших бизнесов, для наших проектов, мы всегда подразумеваем, что знания ограничены в части понимания нашего собственного контекста. Когда мы говорим про ограниченность знаний, мы быстро переходим к теме рак, теме подгрузки наших собственных файлов, наших собственных знаний в нейронке различными методами. Иногда мы говорим про файтюнинг моделей, но в общем и целом мы хотим предоставить нейронке наши собственные знания для того, чтобы она использовала их как долговременную память. И когда мы говорим про перенос таких знаний, мы чаще всего оперируем файлами, пдф-ками, htмэльками, docx или Word-файлами. Но проблема в том, что эти файлы в девяти случаях из десяти не структурированы. У них нет чёткой, понятной структуры, которую нейронки будут хорошо понимать. Да, конечно, мы всегда можем использовать какие-то внешние парсеры. Например, мы часто с вами обсуждали мира CR, либо просто извлекали тексты с помощью встроенных инструментов NCMN или других построителей-агентов. Но у нас всегда возникал вопрос: а можно ли делать обработку наших файлов локально, что чаще всего означает секюрно, без утечки наших данных куда-то вовне? И что, конечно же, всегда важно, либо дёшево, либо совершенно бесплатно. Да, ещё и с таким уровнем качества, чтобы такие сложные таблицы, пдфки со встроенными графиками превращались в прекрасный маркдаун, который легко читается нейронками. И более того, чтобы внутренние картинки и графика в этих пдфках сохраняли свои позиции и даже описывались прямо на лету. Да, такое делать можно. И я даже скажу больше. Есть инструменты, которые позволяют отрабатывать сложные кейсы, когда картинки сложно встроены в наши файлы и даже умеют понимать кейсы, когда наши таблицы разбиты по разным страницам, они могут держать общий контекст и понимать, что это единая таблица, и воспринимать это единым объектом. Здесь в игру вступает такой open source проект, как Docling. Это проект с открытым исходным кодом, который умеет парсить огромное количество форматов: пдфки, Word-файлы, даже картинки HTML. и распаршенные ответы также выдавать в огромном количестве форматов. Ну что, такое? Интересно. Смотрим до конца, ставим лайк, подписываемся и оставляем какой-то коммент. Обязательно спасибо. Если почитать документацию Доклинга, то можно найти информацию о том, что у него очень интересная архитектура. Во-первых, это набор парсеров. Каждый парсер задействуется в зависимости от типа документа, который вы ему даёте. Во-вторых, это определение структуры распаршенного контента. То есть он определяет объекты внутри документа и пытается соединить их в единые логические блоки. И более того, эти логические блоки потом используются для векторизации вашего документа. Для того, чтобы ваши чанки для векторизации образовывались строго в соответствии со структурой документа и у вас не было частичных чанков, которые потом попадают в вашу векторную базу данных и понижают качество векторного поиска. Этот проект уже несколько месяцев на слуху. У него огромное количество звёзд на гитхабе, поэтому в интернете можно найти массу способов использования doкL для своих проектов. Здесь прекрасный документация, и мы можем увидеть, что, чтобы распарсить наш первый документ, достаточно инициализировать конвертер, отдать ему документ и задать некоторый выходной формат, который нам требуется. В данном случае Markда. Давайте попробуем сделать прямо вот этот простой пример. Ну и самая сладкая часть. Нам понадобится написать немного кода, но особо не переживайте, потому что код будет простой, и мы будем медленно проходить по каждой части и обсуждать нюансы этого кода. Давайте в интернете найдём какой-нибудь реализованный пример. Вот, наверное, всем вам известный репозиторий. И здесь есть несколько примеров готового кода на Python, где происходит именно то, что мы только что проговорили. Здесь происходит инициализация конвертера, передача файла в этот конвертер и экспорт результата в виде marркдауна. Отлично, нам это подходит. Давайте прямо здесь заберём этот код, перейдём в наш курсор и давайте сделаем вот такую вещь. У нас совершенно пустая папка в курсоре, и нам нужно настроить наш проект. Давайте сделаем максимально линивый вариант. Прямо так и напишем: "Настрой мне новый Python проект, который использует Docling, и я тебе дам пример другого рабочего проекта Сделай мне подобно". И здесь вставляем пример, который мы только что нашли. Запускаем исполнение. Смотрите, как курсор хорошо отрабатывает. он сразу себе создаёт toдулиist и по коду, который мы ему отдали, он видит, что документы должны забираться откуда-то из папочки input и результаты должны складываться в папочку output. И посмотрите, как выглядит структура. Есть папочка документы, есть папочка output и даже есть уже созданный скрипт, который очень похож на тот, что мы ему дали. Давайте посмотрим. Да, здесь задаётся путь до файла некоторого. Дальше в консоль выводятся результаты работы. Дальше есть инициализация конвертера. И, в принципе, сохранение результатов в Markда. Ну что, давайте попробуем исполнить этот скрипт. Друзья, если вы до этого никогда не настраивали Python проекты, но делать это с курсором, не переживайте. Вы, когда попробуете запустить его, у вас наверняка с первого раза будут ошибки. Что-то будет недоустановлено, что-то нужно будет инициализировать.
Вам курсор подскажет все базовые вещи, все базовые первые шаги, которые вы должны будете пройти для того, чтобы запустить этот проект. Просто следуйте рекомендациям курсора. И для таких задач курсор очень хорошо работает, поэтому вы точно запустите свой проект. Кстати, вот эти все ссылки, которыми мы сейчас пользуемся, я помещу в свою бесплатную Telegram-группу. Заходите туда, забирайте, потому что тут прямо исходные коды и ссылки на документацию, которые полезно будет почитать. Так, ну а мы открываем терминал и здесь пишем вот такую команду. То есть это запуск нашего скрипта предварительно. Смотрите, я положил пдфку в папку документы, потому что скрипт оттуда будет забирать. И здесь прописал путь как раз до этого файла. Давайте откроем этот файл, как он выглядит. Здесь всего лишь несколько страниц, но мы видим, что довольно сложные таблицы тут присутствуют и даже график. Ну что, давайте попробуем запустить наш скрипт. Запускаем. Смотрим, как он исполняется. В консоль выводятся все текущие шаги, которые мы проходим. Отлично. Ждём что-то в папочке. Так, смотрите, нам тут выявился наш Markдаун. Первые несколько строчек. И здесь у нас есть в аутпуте полный наш маркдаун. Давайте закроем терминал. Какие-то левые тут слова, но потом, смотрите, применение этих корректировок. Давайте откроем наш оригинальный файл. Он начинается с применения этих корректировов. Является сокращения. И дальше, смотрите, он сохранил на хорошем уровне наши списки. И смотрите, даже с первого раза прекрасные таблицы в Маркдауне с проставленными хедерами. И, в принципе, всё выглядит довольно достойно. И обратите внимание, здесь определено, в каком месте была картинка. И даже видно, что это график, который называется состав доходов, полученных в двадцать первом году. Вот он, состав доходов, полученных в двадцать первом году. Но никакой обработки картинок здесь нет, к сожалению. Так, давайте перейдём обратно в скрипт. Меня вот не очень устраивает, что он забирает файлы чётко по их имени. Давайте попробуем создать второй скрипт, но сделаем так, чтобы все файлы, которые содержатся в папке документы, забирались на автомате и результаты складывались в папку Output. и пишу: "А сделай так, чтобы он вместо списка просто брал все доступные документы в папке documents, у которых формат подходящий". Запускаем отработку и давайте посмотрим, что он написал. То есть мы видим, что только что создался второй скрипт, который называется multiple formats. И видим здесь правильную конструкцию. Он забирает из папочки документы все файлы, которые соответствуют форматам вот таким, с которыми, в принципе, работает docllлиing, и передаёт их на процессинг. Давайте попробуем добавить ещё один какой-то файл и посмотрим, каким образом это отрабатывает. Вот я добавил ещё какой-то файл. То есть рядом с оригинальным файлом будет ещё какой-то странненький файл лежать, но нам, в принципе, для нашего тестирования подходит. И давайте опять вернёмся в наш курсор, откроем терминал и теперь уже запустим второй скрипт. Так называется. Давайте запускаем наш скрипт и смотрим на папочку output. Что там окажется? Так, смотрите, у нас тут появилось два аута. Outputфаile, тот самый оригинальный файл, который мы уже до этого отрабатывали. И смотрите, второй output как раз второго файла, где у нас есть прямо вот тот текст, сам текст рабарщина, но он всё прямо хорошо распознал и сохранил все списки, все булетпоинты, расставил заголовки. Я хочу напомнить, что это всё происходит 100% локально, только на вашем компьютере. Но меня, естественно, очень сильно зацепляет вот эта история. Мы видим, что он определяет прекрасно места, где были картинки. Вот мы видим, да, что в самом верху есть картинка, но мне интересно, а может ли он описывать эти картинки таким образом, чтобы это всё вместе хранилось в едином маркдауне, в едином контексте? Мы возвращаемся в документацию Dockling, идём в на вкладку Enrichment features и видим, что тут есть отдельный пункт, который называется Picture Description. И здесь сказано, что если вы хотите описывать картинки в документах, то всё это можно делать с помощью визуальных моделей. Более того, тут сказано, что модели могут быть локальные, а могут подключаться извне. то есть удалённые vision модели. Меня, на самом деле, интересует возможность описывать картинки с помощью коммерческих моделей, потому что мы знаем, что локальные модели могут это делать на довольно низком уровне, если, особенно у нас не хватает ресурсов на наших серверах. Давайте попробуем подключить коммерческую модель от Openi для того, чтобы она нам описывала наши картинки и вставляла описание сразу же обратно в документ для того, чтобы сохранять контекст этого документа вместе с исходным текстом. Я забираю вот этот код и возвращаюсь обратно в курсор и пишу максимально прямолинейно. Я вижу в документации, что он может сразу же обрабатывать картинки из файлов. Добавь эту возможность мне. Я бы хотел использовать коммерческую модель от OpenI для этого. Вот выдержки из их документаций. И вставляю ниже всю документацию, которая мне понадобится, и запускаю процесс. Вижу, что он работает с правильными переменнами в соответствии с документацией и создаёт мне третий скрипт. Давайте посмотрим на сам третий скрипт. Обратите внимание, что здесь уже как раз импортируется Picture Description API Options и заданы правильные pipeline options для того, чтобы использовать внешние модели. И дальше уже подключается наш API от Open AI, где мы задаём нужную нам модель
которая умеет анализировать картинки, и задаём правильный промт. Описываем графики или картинки максимально подробно, используя все доступные данные. Я вам даю все ссылки и промты для того, чтобы вы могли воспроизвести этот процесс у себя на компьютере. Ну, а если вам нужен будет исходный код именно вот этих скриптов, то я его положу в свою прогруппу. Кстати, посмотрите на неё тоже, потому что мы там мегаглубоко изучаем искусственный интеллект, инструменты и, в принципе, подходы автоматизации для своего бизнеса, для своей карьеры. Там очень интересно. Ну, сейчас давайте попробуем запустить наш третий скрипт и посмотрим, каким образом отработается наш файл. Файл у нас остаётся прежним, но меня очень интересует как раз первая страница и момент, где у нас представлен график. Мы-то знаем, как бывает критически важно векторизовать графики и их смысловую часть для того, чтобы рак работал корректно. Переходим и запускаем скрипт. Смотрим, как отрабатывается скрипт. И когда он выполнится, я к вам вернусь. Так, ну что, скрипт только что выполнился. Давайте переходим на наш маркдаун и ищем именно первую страницу. Смотрите, вот у нас определилось, где у нас содержится картинка. И дальше здесь написано: "На представленном графике есть круговая диаграмма, показывающая распределение различных категорий доходов или сборов". И, например, видим пошлины мадридской системы, у которой объём составляет 82,4, что есть 17,3%. Давайте откроем и посмотрим пошли мадридской системы 82,4 17,3%. На самом деле я хочу сказать, что это, в принципе, умопомрачительно, если мы рассматриваем то условие, что большинство этих операций происходит у нас локально на нашем компьютере, и только лишь описательная часть самих графиков делается с помощью коммерческих нейронок. При том, что это же можно делать с помощью и локальных нейронок, в том числе. На этом мы будем завершать видео, но в конце я вам хочу сказать, что эта же библиотека Doclink интегрирована с самыми популярными ракфреймворками, например, Langchain и Lama inкс. И здесь же есть сериализации chкиing. Например, здесь есть очень перспективный гибридный чанкинг, который разбивает ваш документ на чанке по логическим блокам и векторизует поблоково эти данные и помещает их в векторную базу данных. Это помогает сохранять на очень высоком уровне векторный поиск и получение чанков обратно. Когда вы пользуетесь векторной базой данных, эта тема для отдельного видео. Если такое интересно, обязательно пишите в комментариях. Можно будет развивать эту тематику, изучать дальше, как работает open source библиотеки, в частности dockling, потому что возможностей здесь намного больше, чем покрыто в этом видео. Опять же, все прямые ссылки ищите в нашей бесплатной прогруппе. Если вам нужен исходный код вот этой автоматизации, то его забирайте в прогруппе. А на этом всё. Хорошего вам дня. M.