![](https://habrastorage.org/getpro/habr/upload_files/727/bfb/466/727bfb466a44219fb52141a71b7e9d3b.jpg)
Подготовили подборку решений для анализа и обработки неструктурированных данных. Инструменты помогут с разметкой текста, построением соответствующих пайплайнов и версионированием масштабных сводов информации для машинного обучения и не только. Поговорим про Sycamore, Surya, OmniParse, Unstract и Oxen — каждый из этих инструментов имеет открытый исходный код.
Кроме того, организации могут значительно сэкономить на управлении и эксплуатации неструктурированных данных за счет объектного облачного хранилища. Запустили тест-драйв, проверяйте.
Sycamore
![](https://habrastorage.org/getpro/habr/upload_files/c39/998/300/c399983000c3dc12540d0e4f760faaa8.png)
Это — фреймворк, предназначенный для обработки и разметки документов: PDF и изображений с таблицами, схемами и другой инфографикой. Задача Sycamore — повысить качество исходников и оптимизировать работу поисковых движков вроде OpenSearch. Разработчики используют schemaless-структуру DocSet. В каком-то смысле она похожа на Python DataFrame в Spark, но заточена под неструктурированные данные. В DocSet документы представлены в виде дерева элементов. Каждый элемент — это отдельный компонент (например, параграф).
Sycamore имеет собственный модуль, который определяет границы компонентов (bounding box) на странице. Сперва для этих целей хотели подобрать существующее open source решение, но готовые модели обнаружения объектов плохо подходили для обработки комплексных корпоративных документов. Тогда авторы обучили трансформер DETR на открытом своде данных DocLayNet.
Что интересно, в основе бэкенда Sycamore лежит другой open source фреймворк — Ray. Он упрощает масштабирование приложений, работающих с машинным обучением и написанных на Python. Из других фишек можно отметить поддержку поисковых роботов для S3, а также интеграцию с Jupyter. В перспективе в Sycamore планируют добавить возможность работы с Pinecone и Weaviate.
Sycamore распространяется под лицензией Apache 2.0, развернуть систему можно локально или на виртуальной машине с помощью Docker. Если вы хотите опробовать инструмент самостоятельно — хорошей точкой для старта будет официальная документация. А еще разработчики выпустили короткий ролик, в котором продемонстрировали возможности Sycamore. В демо они показали, как сегментировать PDF, извлечь заголовки и сформировать векторные эмбеддинги.
Surya
![](https://habrastorage.org/getpro/habr/upload_files/c61/3d5/84a/c613d584ab8cd3bfb7ccf3cd1d49c1d3.png)
Surya — проект разработчика по имени Вик Паручури. Он хотел предоставить бесплатный инструмент для построения инфраструктуры, заточенной под работу с неструктурированными данными и PDF.
Автор отмечает, что PDF-файлы, как правило, хорошо подходят для обучения систем ИИ; что в целом не удивительно, поскольку в этом формате публикуют как научные исследования, так и разного рода корпоративные отчеты. Сегодня PDF — самый популярный электронный формат для работы с документами в интернете и занимает долю в 80%.
Название Surya происходит от имени индийского бога солнца, который, как считалось, обладал всевидящим оком. И инструмент предлагает четыре модели машинного обучения для оптического распознавания символов (OCR):
для распознавания текста на 90 языках;
выделения строк;
анализа топологии (таблиц, изображений, подзаголовков);
определения порядка чтения.
Бенчмарки показывают, что возможности Surya в контексте распознавания текста и сравнения документов сопоставимы с Google Cloud Vision и Tesseract [таблицы один и два].
Стоит заметить, что в первую очередь система предназначена для распознавания печатных материалов и не гарантирует качественную работу OCR с рукописными заметками.
Инструмент не имеет графического интерфейса. Управление происходит через командную строку (или в коде). С одной стороны такой подход можно назвать недостатком, с другой — фичей, поскольку он позволяет интегрировать Surya в существующий пайплайн обработки данных.
Surya распространяется по GPL 3.0, а веса для моделей — под некоммерческой лицензией CC BY-NC-SA 4.0. И по словам разработчика, инструмент применяют несколько исследовательских институтов, а также используют в ряде решений для работы с неструктурированными данными — в частности, OmniParse.
OmniParse
![](https://habrastorage.org/getpro/habr/upload_files/37a/e51/88c/37ae5188cef00cc15c1d72f91a4203c6.png)
Инструмент для парсинга неструктурированных данных. OmniParse поддерживает работу с более чем 20 видами файлов и может преобразовывать документы (например, DOC и PDF), изображения (PNG, JPG, HEIC и другие), аудиозаписи (MP3, WAV, AAC) в markdown-формат. Помимо Surya, под капотом OmniParse также находятся модели Florence-2 base и Whisper Small.
Развернуть инструмент можно с помощью Docker и Skypilot, но пока только на Linux из-за ряда зависимостей и системных конфигураций, недоступных на Windows или macOS.
OmniParse обрел популярность в ИТ-сообществе. На GitHub он собрал более 4 тыс. звезд. На сегодняшний день OmniParse распространяется по условиям GPL 3.0, но в перспективе автор проекта хочет перевести его на MIT (ограничения модели Surya на некоммерческое использование сохраняются, но её могут заменить на другую открытую OCR-модель).
Если взглянуть на дорожную карту проекта, то в него планируют добавить интеграции с LlamaIndex, Langchain и Haystack, возможность извлекать данные по схеме и групповую обработку документов.
Unstract
![](https://habrastorage.org/getpro/habr/upload_files/096/b4f/68a/096b4f68ab3dda871469f73bc4487810.png)
No code платформа, которая помогает строить пайплайны для обработки данных в формате machine-to-machine. C помощью Unstract можно спроектировать API, которые принимают на вход неструктурированную текстовую информацию, а возвращают структурированные JSON-файлы.
Одна из сильных сторон Unstract — это документация. В ней можно изучить принципы работы платформы, узнать, как подключить различные LLM, векторные базы данных и инструменты для преобразования изображений в текст. Наиболее простой способ познакомиться с платформой — почитать Quick Start Guide.
Развернуть решение можно on-premise. Непосредственно Unstract распространяется под лицензией AGPL 3.0. Но ряд дополнительных сервисов имеет ограничения по некоммерческому использованию.
Oxen
![](https://habrastorage.org/getpro/habr/upload_files/a1d/c65/468/a1dc65468e77a9f8a4ef2805d5bb8c82.png)
Cистема контроля версий для структурированных и неструктурированных наборов данных, предназначенных для машинного обучения, интерфейс которой напоминает git.
Oxen разработан для работы с большими файлами — например, CSV с миллионами строк — и серьезными объёмами данных (в качестве примера разработчики приводят полную коллекцию изображений на ImageNet).
За Oxen стоит команда ML-инженеров, которые, по их словам, потратили сотни часов на управление и версионирование наборов данных. Сторонние инструменты им не подошли по тем или иным причинам (например, были перегружены функциональностью).
Авторы отмечают, что Oxen подойдет тем, кто использовал git lfs для версионирования крупных датасетов и потерпел неудачу. Дело в том, что скорость работы git-lfs с объемами данных, необходимыми для обучения интеллектуальных алгоритмов, оставляет желать лучшего.
В Oxen встроен бенчмарк для сравнения производительности LLM. Инструмент diff позволяет посмотреть, как отличаются ответы разных моделей, и оценить их точность. Через него же можно проверить, как менялись наборы данных.
На рынке почти нет утилит для контроля версий, которые не относятся к программному коду. Тем не менее, у Oxen всё же есть альтернативы. Одной из них является, например, система DVC, доступная под лицензией Apache 2.0. Как инструмент командной строки и расширение VS Code, она позволяет сравнивать показатели как самих данных, так и моделей. Но DVC и аналоги, по словам команды Oxen, отличаются худшей производительностью из-за неоптимизированных алгоритмов обработки крупных файлов.