OCRmyPDF
Проект OCRmyPDF · лицензия MPL-2.0
Добавляет текстовый слой в отсканированные PDF: договор, акт или счёт после сканера начинают искаться, текст копируется, и агент может прочитать его сам.
✓ Проверено 07.10.2026: Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: пакет ocrmypdf 15.2.0 из apt ради Tesseract 5.3.4 и Ghostscript 10.02.1, поверх него OCRmyPDF 17.13.0 через uv 0.12.23. Что именно проверяли
Какую задачу решает
Добавляет текстовый слой в отсканированные PDF. Под картинкой страницы появляется распознанный текст: в файле работает поиск, текст копируется, и агент может достать его и прочитать сам. Распознаёт Tesseract, OCRmyPDF разбирает PDF на страницы и собирает новый файл.
- Делает из скана договора, акта или счёта PDF, в котором ищутся слова и номера.
- Распознаёт сразу несколько языков, например русский с английским: ключ -l rus+eng.
- Ставит прямо страницы, которые в скане повёрнуты неправильно (--rotate-pages), и выравнивает перекошенные (--deskew), так написано в README проекта.
- С ключом --skip-text не распознаёт заново страницы, где текст уже есть, и берётся только за сканы.
- По умолчанию старается сохранить результат в архивном формате PDF/A, в нашем прогоне вышел PDF/A-2b.
Пример результата
Говоришь агенту
В папке scans лежит act.pdf, скан акта на двух страницах, текста в нём нет. Распознай его на русском и английском, сохрани рядом как act-ocr.pdf и покажи, какой текст теперь достаётся из файла.
Что получится
Рядом появляется act-ocr.pdf, в котором работает поиск и копируется текст. Агент достаёт текст из нового файла, показывает его и просит сверить суммы и номера со сканом. Файл act.pdf остаётся без изменений.
Паспорт
- Кто делает
- Проект OCRmyPDF
- Исходный код
- github.com/ocrmypdf/OCRmyPDF
- Лицензия
- MPL-2.0
- Версия
- 17.13.0 на 07.10.2026
- Системы
- macOS · Windows · Linux
- Где работает
- На компьютере, на сервере и в контейнере
- Цена
- Бесплатно
- Проверка
- Проверено 07.10
Установить агентом
Установи программу «OCRmyPDF». Работай по шагам и после каждого коротко говори, что сделал.
Что это за программа (каталог smyslokod.ru, официальные источники сверены 07.10.2026):
- официальный сайт: https://ocrmypdf.readthedocs.io/en/latest/
- исходный код: https://github.com/ocrmypdf/OCRmyPDF
- инструкция по установке: https://ocrmypdf.readthedocs.io/en/latest/installation.html
- актуальная версия на 07.10.2026: 17.13.0
- лицензия: MPL-2.0
- для работы нужно (обязательно): Tesseract - распознаёт текст на страницах. При установке через Homebrew или apt он ставится вместе с OCRmyPDF. Перед установкой через uv на Linux его берут из пакета apt, на Windows ставят командой winget
- для работы нужно (очень желательно): Ghostscript - по документации нужен для части преобразований в PDF/A. Homebrew и apt ставят его вместе с OCRmyPDF, на Windows его качают со страницы загрузки
- для работы нужно (в отдельных случаях): uv - через него документация ставит OCRmyPDF на Windows, а на Linux свежую версию поверх пакета дистрибутива. При необходимости uv ставит и подходящий Python
- для работы нужно (в отдельных случаях): Homebrew - на Mac OCRmyPDF ставится через него
- для работы нужно (в отдельных случаях): jbig2enc - без него, по документации, OCRmyPDF работает, но файлы выходят больше. В Ubuntu 24.04 и Debian 13 это пакет jbig2, в Homebrew он входит в формулу OCRmyPDF
Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Если ставишь из PyPI (пакет ocrmypdf), то только в отдельное окружение: uv tool install или pipx. В окружение проекта и в системный Python не ставь.
5. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
6. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
7. Исходный PDF не перезаписывай: результат сохраняй рядом под новым именем, например act-ocr.pdf.
8. Перед распознаванием проверь через tesseract --list-langs, что нужные языки стоят. Для русских документов запускай с -l rus+eng.
9. После распознавания достань текст из нового файла, покажи кусок и попроси меня сверить суммы, номера и даты со сканом.
10. Если программа вышла с кодом 6, скажи мне и предложи --skip-text или --redo-ocr. --force-ocr запускай только с моего «да»: он переводит в картинку всё содержимое страниц, включая обычный текст.
Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
- на компьютере: на Mac проще всего Homebrew. Для Linux подойдёт пакет дистрибутива, а если нужна последняя версия, поверх него ставят uv tool install ocrmypdf.
- на сервере: окно программе не нужно, и при распознавании она у нас не открыла ни одного сетевого соединения. На Ubuntu 24.04 пакет apt и OCRmyPDF через uv встали за 94 и 96 секунд в двух прогонах, а две страницы A4 распознались за 23 и 14 секунд.
- в контейнере: в чистом образе ubuntu:24.04 сначала нужен apt-get update. Русского языка для Tesseract в пакете ocrmypdf нет, его добавляет apt-get install tesseract-ocr-rus.
1. Проверь, не стоит ли программа уже: ocrmypdf --version ; which -a ocrmypdf. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: Tesseract, Ghostscript. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Окружение uv с OCRmyPDF 17.13.0 в нашем прогоне заняло 129 МБ. Пакет apt в Ubuntu 24.04 поставил вместе с собой 166 пакетов, их общий объём мы не мерили. Установочный файл с PyPI весит 562 КБ, остальное - зависимости..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
Способы из официальных источников:
- macOS, Homebrew: brew install ocrmypdf (ставит текущую версию из формулы, на 07.10.2026 это 17.13.0, вместе с Tesseract, Ghostscript, jbig2enc, pngquant и unpaper. Из языков Tesseract с ним идёт только английский, русский добавит brew install tesseract-lang (все языки сразу). На Mac мы не проверяли)
- Windows, uv: uv tool install ocrmypdf (перед ней по документации: winget install -e --id tesseract-ocr.tesseract, winget install -e --id astral-sh.uv и Ghostscript со страницы загрузки. Команда ставит последнюю версию с PyPI. Открой новое окно терминала, чтобы команды попали в PATH)
- Linux, apt: sudo apt-get update && sudo apt-get -y install ocrmypdf (Debian и Ubuntu. Ставит версию из репозитория дистрибутива: в Ubuntu 24.04 это 15.2.0, в нашем прогоне вместе с ней встало 166 пакетов, включая Tesseract и Ghostscript. Русский язык: sudo apt-get install tesseract-ocr-rus)
- Linux, uv: uv tool install ocrmypdf==17.13.0 (так мы и ставили: сначала пакет apt из строки выше ради Tesseract и Ghostscript, потом эта команда. Без ==17.13.0 uv поставит последнюю версию с PyPI. Команда попадёт в ~/.local/bin, по документации uv для программы создаётся своё окружение в папке инструментов uv, отдельно от проектов)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
- ocrmypdf --version: программа запускается без ошибки;
- Сделай PDF из двух страниц-картинок с известным текстом на русском и английском, без текстового слоя, и проверь, что текст из него не достаётся. Распознай его с -l rus+eng и проверь, что в новом файле нашлись все строки, в нём две страницы и он сохранён как PDF/A. Запусти распознавание ещё раз на готовом файле: без ключей программа должна отказаться с кодом 6, с --skip-text пройти. Делай это во временной папке и не трогай мои файлы.
ocrmypdf --version
tesseract --list-langs
ocrmypdf -l rus+eng --rotate-pages --deskew scan.pdf scan-ocr.pdf
ocrmypdf -l rus+eng scan-ocr.pdf again.pdf
ocrmypdf -l rus+eng --skip-text scan-ocr.pdf again.pdf
- если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall ocrmypdf; Windows и Linux, uv: uv tool uninstall ocrmypdf; Linux, apt: sudo apt-get remove ocrmypdf).
Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/ocrmypdf#problemyПромпт собран из официальных инструкций, сверенных 07.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.
Как ставят вручную
Способы из официальных источников, у каждого ссылка на первоисточник.
macOS · Homebrew · источник
brew install ocrmypdf
ставит текущую версию из формулы, на 07.10.2026 это 17.13.0, вместе с Tesseract, Ghostscript, jbig2enc, pngquant и unpaper. Из языков Tesseract с ним идёт только английский, русский добавит brew install tesseract-lang (все языки сразу). На Mac мы не проверяли
Windows · uv · источник
uv tool install ocrmypdf
перед ней по документации: winget install -e --id tesseract-ocr.tesseract, winget install -e --id astral-sh.uv и Ghostscript со страницы загрузки. Команда ставит последнюю версию с PyPI. Открой новое окно терминала, чтобы команды попали в PATH
Linux · apt · источник
sudo apt-get update && sudo apt-get -y install ocrmypdf
Debian и Ubuntu. Ставит версию из репозитория дистрибутива: в Ubuntu 24.04 это 15.2.0, в нашем прогоне вместе с ней встало 166 пакетов, включая Tesseract и Ghostscript. Русский язык: sudo apt-get install tesseract-ocr-rus
Linux · uv · источник
uv tool install ocrmypdf==17.13.0
так мы и ставили: сначала пакет apt из строки выше ради Tesseract и Ghostscript, потом эта команда. Без ==17.13.0 uv поставит последнюю версию с PyPI. Команда попадёт в ~/.local/bin, по документации uv для программы создаётся своё окружение в папке инструментов uv, отдельно от проектов
Как удалить
- macOS, Homebrew:
brew uninstall ocrmypdf - Windows и Linux, uv:
uv tool uninstall ocrmypdf - Linux, apt:
sudo apt-get remove ocrmypdf
Что нужно для работы
- Tesseract (обязательно) - распознаёт текст на страницах. При установке через Homebrew или apt он ставится вместе с OCRmyPDF. Перед установкой через uv на Linux его берут из пакета apt, на Windows ставят командой winget
- Ghostscript (очень желательно) - по документации нужен для части преобразований в PDF/A. Homebrew и apt ставят его вместе с OCRmyPDF, на Windows его качают со страницы загрузки
- uv (в отдельных случаях) - через него документация ставит OCRmyPDF на Windows, а на Linux свежую версию поверх пакета дистрибутива. При необходимости uv ставит и подходящий Python
- Homebrew (в отдельных случаях) - на Mac OCRmyPDF ставится через него
- jbig2enc (в отдельных случаях) - без него, по документации, OCRmyPDF работает, но файлы выходят больше. В Ubuntu 24.04 и Debian 13 это пакет jbig2, в Homebrew он входит в формулу OCRmyPDF
Системы
- macOS - ставится через Homebrew одной командой, вместе с Tesseract и Ghostscript.
- Windows - одной командой не ставится: по документации сначала Tesseract и uv через winget, Ghostscript вручную со страницы загрузки, потом сам OCRmyPDF через uv. 32-битная Windows не поддерживается. Установку на Windows мы сами не прогоняли.
- Linux - есть пакет в Debian, Ubuntu и Fedora, но он может отставать на несколько больших версий. Свежую версию документация советует ставить через uv поверх пакета дистрибутива.
Где запускать
Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.
- На компьютере - на Mac проще всего Homebrew. Для Linux подойдёт пакет дистрибутива, а если нужна последняя версия, поверх него ставят uv tool install ocrmypdf.
- На сервере - окно программе не нужно, и при распознавании она у нас не открыла ни одного сетевого соединения. На Ubuntu 24.04 пакет apt и OCRmyPDF через uv встали за 94 и 96 секунд в двух прогонах, а две страницы A4 распознались за 23 и 14 секунд.
- В контейнере - в чистом образе ubuntu:24.04 сначала нужен apt-get update. Русского языка для Tesseract в пакете ocrmypdf нет, его добавляет apt-get install tesseract-ocr-rus.
Сколько ресурсов нужно
- Место на диске
- Окружение uv с OCRmyPDF 17.13.0 в нашем прогоне заняло 129 МБ. Пакет apt в Ubuntu 24.04 поставил вместе с собой 166 пакетов, их общий объём мы не мерили. Установочный файл с PyPI весит 562 КБ, остальное - зависимости.
- Видеокарта
- В нашем прогоне видеокарта не понадобилась.
- Сеть
- Нужна при установке: apt качает пакеты из репозитория дистрибутива, uv берёт OCRmyPDF и зависимости с PyPI (в прогоне это были адреса Fastly, на которые указывают pypi.org и files.pythonhosted.org). apt в прогоне ходил к archive.ubuntu.com и security.ubuntu.com, а ещё к deb.nodesource.com: этот источник Node.js был заранее прописан в образе нашей песочницы, OCRmyPDF он не нужен. Во время распознавания программа не открыла ни одного сетевого соединения, это записано в прогоне. Куда агент потом отправит распознанный текст, зависит от него самого.
Две страницы A4 в 300 точек на дюйм OCRmyPDF распознавал двумя параллельными процессами, в двух прогонах это заняло 23 и 14 секунд.
Лицензия и платные замены
Лицензия MPL-2.0. Сама программа идёт под Mozilla Public License 2.0. По README её можно встраивать в чужой код, в том числе закрытый, но свои изменения в коде OCRmyPDF надо публиковать. Вспомогательный код в основном под MIT, документация и тесты под CC BY-SA 4.0. Чтобы обрабатывать свои файлы, делать ничего не нужно. Текст лицензии
Цена: Бесплатно
Платные замены
Платную программу, которую агент запускал бы из терминала так же, мы не подбирали. OCRmyPDF и Tesseract бесплатные.
Бесплатные замены
- Tesseract - Движок распознавания под лицензией Apache-2.0, на котором работает OCRmyPDF. Его можно звать напрямую, но PDF на вход он не берёт: страницы агенту придётся сначала сохранить картинками, а потом собрать результат.
О чём помнить
- Безопасность. Агент запускает ocrmypdf в терминале сам (exec). Программа читает те PDF, которые агент ей передал (read), и записывает новый файл по пути, который задаёт агент, в любую папку, куда у пользователя есть право записи (write). Сохранять результат рядом с исходником под новым именем - правило для агента, сама программа такого ограничения не ставит. Ключей и входа в аккаунты OCRmyPDF не просит.
- Команды brew, apt и uv без номера версии ставят ту, что сейчас в их каталоге. Мы проверили 17.13.0, а в Ubuntu 24.04 apt ставит 15.2.0. Что встало у тебя, покажет ocrmypdf --version.
- В распознанном тексте бывают ошибки. В нашем прогоне на смеси русского и английского английское слово on пришло русскими буквами («оп»): на вид то же, но поиск по нему не найдёт. Суммы, номера и даты сверяй со сканом.
- Русский язык нужно поставить отдельно: в Ubuntu пакет tesseract-ocr-rus, в Homebrew brew install tesseract-lang. Какие языки есть, покажет tesseract --list-langs. Документация предупреждает, что сам OCRmyPDF несёт только латинский шрифт, остальные берёт из системы, поэтому в прогоне мы поставили fonts-noto-core.
- Файл может вырасти. В прогоне скан из двух страниц вырос с 257 КБ до 832 КБ, в 3,23 раза. Программа сама назвала причины: ключ --deskew перекодирует картинки, нет кодировщика jbig2, включено преобразование в PDF/A. Если размер важен, убери --deskew и поставь jbig2 (apt install jbig2 в Ubuntu 24.04 и новее).
- Если в PDF уже есть текст, OCRmyPDF останавливается с кодом 6, в нашем прогоне на первой же странице с текстом. --skip-text пропускает такие страницы, --redo-ocr заменяет старый слой распознавания, а --force-ocr по документации переводит в картинку всё содержимое страниц и распознаёт его заново.
- Зашифрованные PDF программа не читает и выходит с кодом 8. Документация советует сначала снять шифрование другой программой, например qpdf.
Частые проблемы
PriorOcrFoundError: page 1 already has text! - aborting, код выхода 6
В PDF уже есть текст: файл распознавали раньше или он не скан. Так вышло у нас при повторном запуске на готовом файле. Добавь --skip-text: программа распознает только страницы без текста и пропустит те, где он уже есть. Чтобы заменить старый слой распознавания, есть --redo-ocr.
The output file size is 3.23× larger than the input file. и строка The optional dependency 'jbig2' was not found
Так OCRmyPDF объяснил рост файла в нашем прогоне: ключ --deskew перекодировал картинки страниц, кодировщика jbig2 нет, включено преобразование в PDF/A. Не используй --deskew, если страницы ровные, поставь jbig2 (в Ubuntu 24.04 и новее apt install jbig2). Если архивный формат не нужен, документация предлагает --output-type pdf.
После uv tool install ocrmypdf команда ocrmypdf не находится или ocrmypdf --version показывает старую версию
uv кладёт команду в ~/.local/bin, а этой папки ещё нет в PATH. Если стоит и пакет apt, в системе две копии: в нашем прогоне which -a ocrmypdf показал ~/.local/bin/ocrmypdf и /usr/bin/ocrmypdf версии 15.2.0, и работает та, что раньше в PATH. Посмотри which -a ocrmypdf. Открой новое окно терминала или запусти uv tool update-shell, как советует документация, либо вызывай ~/.local/bin/ocrmypdf полным путём. Правку PATH агент делает только с твоего «да».
Проверка
✓ Проверено 07.10.2026: Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: пакет ocrmypdf 15.2.0 из apt ради Tesseract 5.3.4 и Ghostscript 10.02.1, поверх него OCRmyPDF 17.13.0 через uv 0.12.23.
- Когда
- 07.10.2026
- Среда
- Ubuntu 24.04.5 (x86_64) в одноразовом контейнере Docker на сервере: пакет ocrmypdf 15.2.0 из apt ради Tesseract 5.3.4 и Ghostscript 10.02.1, поверх него OCRmyPDF 17.13.0 через uv 0.12.23
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер Ubuntu 24.04.5 без данных и ключей. Установка по документации OCRmyPDF для Debian и Ubuntu: apt-get update и apt-get install ocrmypdf, потом uv tool install ocrmypdf==17.13.0. Всё вместе заняло 96 секунд, apt поставил 166 пакетов, окружение uv заняло 129 МБ.
- ocrmypdf --version вывел 17.13.0. which -a ocrmypdf показал две копии: новую в ~/.local/bin и старую 15.2.0 из пакета Ubuntu в /usr/bin.
- Для русского языка поставили tesseract-ocr-rus и шрифт fonts-noto-core. tesseract --list-langs показал eng, osd и rus.
- Скрипт прогона сам сделал тестовый скан: две страницы A4 картинками в 300 точек на дюйм, чуть повёрнутые, размытые и с шумом, на первой странице строки на русском, на второй на английском. Текста в таком PDF нет, проверка нашла 0 знаков.
- ocrmypdf -l rus+eng --rotate-pages --deskew распознал файл двумя параллельными процессами за 14 секунд. В новом PDF нашлись все восемь контрольных строк, например «Акт сверки», «Итого к оплате», «Invoice», «Delivery address». Слово on в строке на английском пришло русскими буквами «оп».
- В результате 2 страницы, формат PDF/A-2b, это прочитала библиотека pikepdf. Файл вырос с 257 КБ до 832 КБ, и программа сама назвала причины: --deskew, нет jbig2, преобразование в PDF/A.
- Повторный запуск на уже распознанном файле остановился с ошибкой PriorOcrFoundError и кодом 6. С --skip-text тот же запуск прошёл и пропустил обе страницы.
- Каждый результат скрипт сверил сам и только после этого напечатал TASK_OK.
- Сетевые соединения записаны по этапам. apt ходил к адресам archive.ubuntu.com и security.ubuntu.com, а ещё к deb.nodesource.com: этот источник Node.js уже был прописан в образе песочницы, к OCRmyPDF он отношения не имеет. uv ходил к адресам Fastly, на которые указывают pypi.org и files.pythonhosted.org. Во время распознавания программа не открыла ни одного соединения.
- uv tool uninstall ocrmypdf убрал команду из ~/.local/bin, apt-get remove ocrmypdf убрал пакет Ubuntu. Контейнер удалён.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 07.10.2026 | 17.13.0 | задача | контейнер, Linux | получилось |
| 07.10.2026 | 17.13.0 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
- TesseractДостаёт текст из сканов договоров, фото чеков, визиток и снимков экрана, понимает русский. Агенту нужен, чтобы прочитать скан и собрать PDF, в котором ищется текст.
- ImageMagickСжимает картинки и переводит их в WebP, меняет размер, делает обложки с надписью и водяные знаки. Агенту нужна, чтобы обработать всю папку картинок сайта за один раз.
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.