Мануал от Локи: How to digitise a book in 2025. lockywolf guide.
Ещё от него рекомендация: Mathpix: Document conversion done right.

Ниже приведены мои заметки:

OCRMyPDF + EasyPDF

Сам OCRMyPDF работает с Tesseract-ом.

sudo apt install tesseract-ocr tesseract-ocr-rus

Есть версия с плагином EasyOCR: GitHub: OCRmyPDF EasyOCR plugin. Ставится так:

Сначала устанавливается pytorch (лучше установить отдельно по инструкции с их сайта), чтобы смэтчить с версией CUDA.

Потом нужно установить свежий ghostscript. Мне на лабораторном сервере lascala пришлось компилировать версию 10.05.1 из исходников, причём в Makefile нужно было внести исправление: в переменную STDLIBS я добавил библиотеку -lstdc++fs. Я так понял, что это было необходимо из-за старой версии gcc (8.4 вместо 9+).
Не уверен, насколько это необходимо, но кажется я компилировал при помощи:
make USE_TESSERACT=1 CXXFLAGS="-std=c++17" LDFLAGS="-lstdc++fs"
Моё обсуждение с чатгпт на тему проблемы с установкой ghostscript: ChatGPT - Ошибка линковки Ghostscript.

И наконец:

pip install git+https://github.com/ocrmypdf/OCRmyPDF-EasyOCR.git

Использование:

ocrmypdf --redo-ocr -l rus --plugin easyocr --pdf-renderer=sandwich book.pdf book-ocred.pdf

Если нужно извлечь текст из djvu, вот статья про это: Convert djvu to pdf.

Пытался пообщаться про это с чатгпт, вот что получил: ChatGPT - OCR для задачников.

Мой репозиторий OCR-OCD

  • gpt-4-vision-preview (OpenAI)
    Хорошее качество.
    Секунд по 20-40 на страницу
    Несмотря на промпт, не может нормально обработать двухколоночные страницы или двухстраничные листы, требует делить её на две части.
    Стоимость выходит ~1.5 руб/страница
  • gemini-2.0-flash-exp
    Качество вроде хорошее, но систематически не проверено
    Порядка 1–3 секунд на страницу
    Есть бесплатный тарифный план, но он имеет небольшой лимит (если я правильно понимаю, 50 запросов в день). Платный тариф не пробовал

Идеи

  • Можно делать OCR классическим методом через Tesseract/EasyOCR, а затем кормить табличку OCR-слоя в LLM, не беря pdf. Это должно быть и быстрее (если классическое распознавание делать на видеокарточке), и дешевле, т.к. токенов в таблице наверняка поменьше, чем в картинке. Надо тестить (идея от 2025-08-03)

VLM — visual language model

Статьи: