Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

LittleVec — легковесная векторная база данных

В последние годы векторные базы данных стали неотъемлемой частью современных ИИ-проектов: поиск по embedding, RAG-пайплайны, быстрый семантический поиск и многое другое. Однако, если вы когда-либо пробовали развернуть подобную БД — будь то FAISS, Milvus, Qdrant или аналогичные решения — вы наверняка сталкивались с тем, что даже для небольших экспериментов и pet-проектов такие системы требуют довольно мощного железа. В итоге приходится либо платить за дорогой сервер, либо мириться с низкой скоростью и неудобствами.
Read full post gblog_arrow_right

Утилиты для извлечения изображений и текста из PDF

В повседневной работе часто возникает задача быстро извлечь изображения или текст из PDF-документов — будь то подготовка презентаций, анализ документов, создание датасетов или автоматизация обработки большого количества файлов. Стандартные графические редакторы или онлайн-сервисы либо требуют ручной работы, либо работают медленно, либо не позволяют автоматизировать процесс. Чтобы упростить и ускорить решение этих задач, я написал набор утилит на C++ — PDF2Images. Они позволяют: Мгновенно извлекать все изображения из PDF-файлов в нужном формате (png, jpg, tiff и др.
Read full post gblog_arrow_right

Бенчмарк энтропий Шеннона и Реньи на C++

Решил сравнить как различные показатели энтропии Реньи влияют на производительность в плане вычислений. В реальных задачах часто возникает необходимость быстро и эффективно вычислять энтропию для большого количества данных. Для этого важно понимать, как различные показатели энтропиивлияют на время выполнения.

Определение угла наклона текста на сканированных изображениях

При оптическом распознавании текста на сканированных документах качество распознавания зависит от того, наклонён ли текст в документе. У выровненных документов качество распознавания заметно лучше. Соответственно, возникает практическая необходимость в средствах автоматического выравнивания угла наклона текста. В статье предлагается простой, универсальный и достаточно эффективный алгоритм выравнивания наклона текста, основанный на идее минимизации средней энтропии строк и столбцов растрового изображения. Идея Эксперимент Алгоритм Ссылки Идея Базовая идея алгоритма состоит в том, что при повороте текста на сканированном изображении средняя, по строкам и столбцам, энтропия распределения пикселей должна возрасти.
Read full post gblog_arrow_right

Пробуем контрактное программирование С++20 уже сейчас

Пробуем контрактное программирование С++20 уже сейчас В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности. Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте. TL;DR Есть форк clang, поддерживающий контракты. На его примере я рассказываю как пользоваться контрактами, чтобы как только фича появилась в вашем любимом компиляторе, вы сразу же могли начать её использовать.
Read full post gblog_arrow_right

CRTP и двойной статическая полиморфизм C++

CRTP и двойной статическая полиморфизм Ниже представлен паттерн проектирования на C++, известный как CRTP (Curiously Recurring Template Pattern). С его помощью реализовать двойной статический полиморфизм. Пример ниже демонстрирует, как можно строить иерархии классов с использованием шаблонов для достижения поведения, похожего на виртуальные функции, но без накладных расходов раннего связывания. Зачем нужен этот код? Обычный полиморфизм в C++ реализуется через виртуальные функции и наследование, что приводит к использованию виртуальной таблицы (vtable) и некоторым накладным расходам.
Read full post gblog_arrow_right