/ Модель

Характеристики

Контекст
1 024 токена
Лицензия
MIT
Архитектура
florence2 · dense
Опубликована
8 окт 2024

ColFlor

Генерация текстаТекст → текст8 профессий

ColFlor — компактная англоязычная модель для OCR-свободного поиска по изображениям страниц документов.

112скачиваний за 30 дней20лайковвеса обновлены17 дек 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

ColFlor — модель для поиска по визуальному содержимому документов, представленная авторами проекта ColFlor. Она обрабатывает страницы документов как изображения и выполняет поиск без отдельного OCR-конвейера. Модель насчитывает 174 млн параметров; авторы сообщают, что по сравнению с ColPali она в 17 раз меньше, быстрее кодирует запросы и изображения, а качество на англоязычных документах с большим количеством текста ниже на 1,8%. Репозиторий содержит веса в формате safetensors.

Модель предназначена для поиска документов и страниц по текстовому запросу, в том числе в крупных базах PDF. Она рассчитана на английский язык. Авторы отмечают заметный разрыв в качестве при работе с рисунками по сравнению с более крупными моделями, такими как ColPali, и слабую работу на других языках. Лицензия — MIT.

Сценарии применения

  • поиск страниц PDF по текстовому запросу
  • поиск по базе сканированных документов без OCR
  • извлечение релевантных страниц из англоязычного архива
  • поиск текстовой информации на изображениях документов

Ограничения

Модель ориентирована на английский язык и слабо работает на других языках. На рисунках её качество заметно уступает более крупным моделям, например ColPali.

Для каких профессий подходит8

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

ColFlor: Towards BERT-Size Vision-Language Document Retrieval Models

In June 2024, ColPali was introduced as an OCR-free document retrieval model, built over PaliGemma, shifting the paradigm of PDF document retrieval by directly processing images instead of using error-prone and resource-heavy OCR pipelines. However, with three billion parameters, ColPali might be computationally expensive, especially for large document databases. In contrast, text retrieval models like ColBERT are more efficient with just a few hundred million parameters, but they require error-prone and expensive OCR pipelines to. To bridge this gap, we introduce ColFlor, an OCR-free visual document retrieval model with only 174 million parameters. ColFlor is 17 times smaller than ColPali, 9.8 times faster in encoding queries and 5.25 faster in encoding images, with only a 1.8% drop in performance on text-rich English documents.

More details about the model can be found in the ColFlor blogpost

Usage

First, you need to clone the github repo and install the dependencies as follows

git clone https://github.com/AhmedMasryKU/colflor
cd colflor
pip install -e .

Then, you can run the following inference code:

import pprint
from typing import List, cast

import torch
from datasets import Dataset, load_dataset
from torch.utils.data import DataLoader
from tqdm import tqdm

from colpali_engine.models import ColFlor
from colpali_engine.models import ColFlorProcessor
from colpali_engine.utils.processing_utils import BaseVisualRetrieverProcessor
from colpali_engine.utils.torch_utils import ListDataset, get_torch_device


def main():
    """
    Example script to run inference with ColFlor.
    """

    device = get_torch_device("auto")
    print(f"Device used: {device}")

    # Model name
    model_name = "ahmed-masry/ColFlor"

    # Load model
    model = ColFlor.from_pretrained(
        model_name,
        #torch_dtype=torch.bfloat16,
        device_map=device,
    ).eval()

    # Load processor
    processor = cast(ColFlorProcessor, ColFlorProcessor.from_pretrained(model_name))

    if not isinstance(processor, BaseVisualRetrieverProcessor):
        raise ValueError("Processor should be a BaseVisualRetrieverProcessor")

    # NOTE: Only the first 16 images are used for demonstration purposes
    dataset = cast(Dataset, load_dataset("vidore/docvqa_test_subsampled", split="test[:16]"))
    images = dataset["image"]

    # Select a few queries for demonstration purposes
    query_indices = [12, 15]
    queries = [dataset[idx]["query"] for idx in query_indices]
    print("Selected queries:")
    pprint.pprint(dict(zip(query_indices, queries)))

    # Run inference - docs
    dataloader = DataLoader(
        dataset=ListDataset[str](images),
        batch_size=4,
        shuffle=False,
        collate_fn=lambda x: processor.process_images(x),
    )
    ds: List[torch.Tensor] = []
    for batch_doc in tqdm(dataloader):
        with torch.no_grad():
            batch_doc = {k: v.to(model.device) for k, v in batch_doc.items()}
            embeddings_doc = model(**batch_doc)
        ds.extend(list(torch.unbind(embeddings_doc.to("cpu"))))

    # Run inference - queries
    dataloader = DataLoader(
        dataset=ListDataset[str](queries),
        batch_size=4,
        shuffle=False,
        collate_fn=lambda x: processor.process_queries(x),
    )

    qs: List[torch.Tensor] = []
    for batch_query in dataloader:
        with torch.no_grad():
            batch_query = {k: v.to(model.device) for k, v in batch_query.items()}
            embeddings_query = model(**batch_query)
        qs.extend(list(torch.unbind(embeddings_query.to("cpu"))))

    # Run scoring
    scores = processor.score(qs, ds).cpu().numpy()
    idx_top_1 = scores.argmax(axis=1)
    print("Indices of the top-1 retrieved documents for each query:", idx_top_1)

    # Sanity check
    if idx_top_1.tolist() == query_indices:
        print("The top-1 retrieved documents are correct.")
    else:
        print("The top-1 retrieved documents are incorrect.")

    return


if __name__ == "__main__":
    typer.run(main)

Limitations

  • Figures: While ColFlor exhibits reasonable performance on figures, there's a relatively large gap in performance between it and larger models such as ColPali.
  • Multilinguality: The current version of the model only supports the Engligh language and performs poorly on other languages.

License

We release this model under the MIT license.

Contact

If you have any questions about this work, feel free to reach out to Ahmed Masry at masry20@yorku.ca or ahmed.elmasry24653@gmail.com.

Acknowledgement

This work was carried out at the Intelligent Visualization Lab at York University in Canada. It was supported by the Natural Sciences Engineering Research Council (NSERC) of Canada and Canada Foundation for Innovation (CFI). Additionally, it received support through a GCP credits award from Google's PaliGemma Academic Program.

We appreciate the well-documented training and evaluation GitHub repositories provided by the ColPali team, which were essential in our model development. This model card is adapted from ColPali Model Card

Citation

If you plan to use ColFlor in your research, please consider citing us as follows:

@INPROCEEDINGS{11204231,
  author={Masry, Ahmed and Hoque, Enamul},
  booktitle={2025 IEEE 35th International Workshop on Machine Learning for Signal Processing (MLSP)}, 
  title={Colflor: Towards Bert-Size Vision-Language Document Retrieval Models}, 
  year={2025},
  volume={},
  number={},
  pages={1-5},
  keywords={Measurement;Visualization;Image coding;Computational modeling;Optical character recognition;Pipelines;Machine learning;Signal processing;Real-time systems;Multilingual;Multimodal document understanding;Vision language models;Information Retrieval},
  doi={10.1109/MLSP62443.2025.11204231}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
ColFlor
Ревизия весов
14833a2

0 моделей