Что реально делает инструмент OCR PDF
Отсканированный PDF выглядит как текст, но им не является. Это стопка картинок текста — растровые изображения, снятые твоей камерой или сканером, упакованные в PDF-обёртку. Жмёшь Cmd-F — ничего не происходит. Выделяешь абзац — курсор пробегает по пикселям и захватывает ноль. Потому что в файле нет текста, есть только видимость текста. Инструмент OCR PDF это чинит. Он рендерит каждую страницу в canvas через pdfjs-dist, потом гоняет Tesseract.js — WebAssembly-порт открытого Tesseract — чтобы прочитать символы обратно из пикселей. На выходе настоящий .txt с распознанными словами. Всё происходит в браузере. Скан не покидает машину.
Эта последняя часть — весь смысл. OCR онлайн существует два десятилетия; возьми любой OnlineOCR.net, SmallPDF, iLovePDF, веб-версию Adobe Acrobat — все они умеют. Каждый из них сначала загружает документ. Для рекламной листовки нормально. Не нормально для подписанного кредитного договора, медицинской карты, скана паспорта, иммиграционной анкеты, налоговой декларации и других вещей, которые на самом деле OCR-ят. Tesseract гоняет то же распознавание локально; мы просто сделали обёртку, чтобы браузер мог его запустить.
Как пользоваться инструментом OCR PDF
Один экран. Брось скан, выбери язык, нажми запуск.
- Брось или выбери отсканированный PDF. До 50 МБ и 100 страниц.
- Выбери язык документа. Сегодня поддерживаются английский, испанский, немецкий, французский, португальский, итальянский и русский. Языковая модель (~5–10 МБ) скачивается один раз на язык и кэшируется браузером.
- Выбери DPI рендера. Рекомендуем 200 DPI. 300 DPI даёт лучшую точность, но дольше; 150 DPI быстрее, но хорош только на чистых сканах.
- Нажми «Запустить OCR». Модель загружается (5–15 секунд в первый раз), затем каждая страница рендерится и распознаётся по порядку. Прогресс показывается по страницам; можно отменить посередине.
- Скопируй распознанный текст или скачай как .txt с именем по исходнику (например,
contract-scan.pdf→contract-scan.txt). Выход в UTF-8.
Единственный сетевой трафик во время запуска — первая загрузка языковой модели с CDN Tesseract. Этот запрос — публичный fetch статики, тот же для всех, без данных PDF в обе стороны. После того как модель приземляется в кеш браузера, вкладка Network молчит до конца запуска и молчит всегда для последующих запусков на том же языке.
DPI и язык — две ручки, которые важны
Tesseract — это сопоставитель шаблонов, обученный на формах символов. Две вещи ломают сопоставление: недостаточно пикселей и неправильный алфавит. DPI управляет первым. Язык — вторым.
| DPI рендера | Страниц в минуту | Точность на чистых сканах | Для чего |
|---|---|---|---|
| 150 DPI | ~30–50 | 92–96% | Уже резкие сканы, однокомлонный основной текст, быстрые черновики |
| 200 DPI (по умолчанию) | ~20–30 | 96–99% | Большинство документов — оптимум скорости и точности |
| 300 DPI | ~10–15 | 97–99%+ | Мелкие шрифты, мелкий печатный текст, сноски, всё, чему доверишь без вычитки |
Ниже 150 DPI — плохой обмен. Tesseract начинает путать похожие глифы, когда высота символа падает примерно ниже 30 пикселей: «rn» читается как «m», «cl» как «d», строчная L выглядит как цифра 1. Выше 300 DPI редко помогает и примерно удваивает время — к тому моменту ты рендеришь страницу с большей детализацией, чем распознаватель может использовать.
Язык важнее, чем кажется. Tesseract с английской моделью попытается распознать испанскую страницу, но он не знает, что ñ, í или á — это буквы, и будет угадывать и промахиваться. Бери доминирующий язык документа. Для испанского договора с парой английских брендов выбирай испанский; Tesseract возьмёт бренды примерно верно, а основной текст точно. Для документов со смешанными алфавитами (английский рядом с китайским, арабским, хинди) Tesseract плохо переключается на лету — скажи, если нужен один из таких, и мы добавим модель в выбор.
Разбор примера с реальными цифрами
Возьмём реальный случай: 12-страничный скан университетского транскрипта 1980-х — машинописный шрифт, скан 200 DPI, без видимых повреждений, одна колонка, английский. Файл 4,2 МБ.
При 200 DPI / английский запуск занимает 28 секунд от и до (когда модель уже в кеше из прошлой сессии). Выход — .txt 6,8 КБ. Спот-проверка против оригинала: 1247 слов на страницах, всего 14 ошибок OCR. Большинство — путаница «I» vs «l» vs «1» в колонке студенческого ID. Названия курсов вышли чисто. Оценки — чисто. Шапка транскрипта — зона с гербом школы, куда скан зацепил часть печати — единственная зона с реальным мусором. Ручная чистка заняла две минуты в текстовом редакторе.
Тот же документ при 300 DPI: 51 секунда, 4 ошибки. Тот же документ при 150 DPI: 18 секунд, 38 ошибок — заметно хуже, цифры пострадали сильно. 200 DPI оказался правильным выбором.
Переверни вход: фото от руки написанной заметки с встречи, экспортированное как PDF. Tesseract вернул в основном пустой файл с парой случайных символов. Это честный ответ — Tesseract обучен на машинно-печатном тексте, а рукопись — другая задача. Мы не притворяемся.
Как это сравнивается с Adobe Acrobat, SmallPDF, iLovePDF
Честное сравнение: OCR в Adobe Acrobat лучше нашего на сложных входах, и мы говорим это прямо.
Acrobat гоняет Tesseract под капотом (или гонял исторически — Adobe положила свой ML поверх много лет назад) плюс стек препроцессинга: деперекос, коррекция контраста, детектирование строк и пост-OCR языковая модель, ловящая частые ошибки распознавания. На мятом чеке, сфотографированном под люминесцентной лампой, Acrobat произведёт полезный текст там, где Tesseract вернёт кашу. Это стоит ~$20/мес, если работа — OCR-ить грязные реальные входы каждый день. На чистом машинно-печатном скане 200–300 DPI на распространённом языке разрыв сокращается — Tesseract часто 97%+, Acrobat часто 99%+, и для большинства разница не оправдывает загрузку документа.
SmallPDF и iLovePDF оборачивают серверный OCR (тот же класс движков) за дневной бесплатной квотой и постоянным напоминанием о подписке. Работают. И держат твой PDF на своих серверах как минимум несколько часов, обычно дольше — в зависимости от политики хранения, которую ты не читал. Для чувствительных сканов это неправильный дефолт. Для маркетинговой листовки неважно.
OCR от OnlineOCR.net и PDF24 — дешёво-ощущающийся край рынка: работает, обвешан рекламой, лимиты на размер, водяной знак на выходе, пока не зарегистрируешься. Это то, на что мы показываем как на нижнюю полку Big Software. Мы наоборот: медленнее, чем ничего (Tesseract — однопоточный WASM, CPU делает работу), без загрузки, без аккаунта, без квот.
От чего зависит чистый OCR
OCR — это сопоставление шаблонов по пикселям. Шаблон должен быть виден. Пять вещей влияют на точность сильнее всего:
- Разрешение скана. 200–300 DPI — пол надёжного OCR. 100 DPI телефонные фото часто выглядят нормально для человека и сбивают Tesseract — штрихи букв слишком мало пикселей шириной, распознавателю не за что зацепиться.
- Контраст. Чёрные чернила на белой бумаге — лучше всего. Выцветшие копии копий, где буквы сливаются с фоном страницы, быстро роняют точность. Подкрути контраст в ПО сканера до сохранения PDF, если можешь.
- Перекос. Страница, отсканированная под 5°, читается хуже прямой. Acrobat деперекашивает автоматически; Tesseract — нет. Пересканируй с более прямой страницей или поверни в просмотрщике.
- Шрифт. Современные основные шрифты 10–12 пт OCR-ятся чисто. Декоративные шрифты, blackletter, очень тонкие или жирные начертания, прописной display-шрифт и рукопись — сложнее.
- Фон. Сплошной белый или светло-кремовый — легко. Сильно заводнённые страницы, защищённая бумага (линеечный фон чека, узорный фон диплома) и состарившаяся бумага с пожелтением — это шум для распознавателя.
Самое мощное исправление при плохом OCR — пересканировать на 300 DPI с поднятым контрастом. Ещё и бесплатно.
Рендер в текст — не то же, что извлечение встроенного текста
Это единственное, в чём люди стабильно путаются. Есть две похожие задачи «PDF в текст», которые звучат одинаково и одинаковыми не являются.
OCR страницы (что делает этот инструмент): каждая страница отрисовывается как высокого разрешения растр, затем Tesseract распознаёт символы из этих пикселей. Работает на отсканированных PDF, фото-страниц, на всём, где текст — часть картинки. Медленно, чуть неточно, единственный вариант для image-only PDF.
Извлечь встроенный текст (другой инструмент): читает текстовые объекты, хранящиеся в самом PDF. Работает на любом PDF, рождённом из текстового редактора, «Сохранить как PDF» из браузера, LaTeX, InDesign — всё, что произвело PDF из реального текста. Мгновенно, идеально точно, но возвращает ноль на сканах — встроенного текста для извлечения нет.
Если у PDF уже есть выделяемый текст (попробуй выделить предложение в любом просмотрщике PDF), бери «Извлечь текст из PDF». Быстрее и точнее. OCR — для случая, когда извлекать нечего, есть только пиксели для распознавания.
Что такое Tesseract и чем он не является
Tesseract начался как исследовательский проект в HP Labs в 1980-х, был открыт в 2005-м и стал предпочтительным OCR-движком Google на следующее десятилетие. Сообщественная версия, которую мы гоняем, — тот же движок, что стоит внутри множества десктопных инструментов, Linux-дистрибутивов и конвейеров обработки документов. Это не новое и не магия — зрелое, предсказуемое и бесплатное.
В чём он хорош: машинно-печатный текст, современные латиница и кириллица, основные шрифты в нормальных размерах, книги, договоры, статьи, отсканированные чеки, машинописные документы. В чём средне: мелкие шрифты ниже 8 пт, математическая нотация, многоколонные раскладки (пытается, но иногда переплетает колонки), таблицы (отрисовываются как текст в порядке чтения, не как таблица). В чём плох: рукопись (по сути нечитаема; очень аккуратная рукописная печать иногда работает, но жди серьёзных ошибок), CAPTCHA (намеренно), сильно стилизованные шрифты, всё, где символы намеренно сложно прочитать.
Современные коммерческие OCR — Google Cloud Vision, Microsoft Azure Document Intelligence, AWS Textract — бьют Tesseract на сложных входах, потому что используют современные трансформерные модели, обученные на огромных наборах данных. Они и берут за каждую страницу плату и требуют отправлять документ в облако. Для большинства документов в большинстве случаев Tesseract в браузере — правильная сделка.
Похожие PDF-инструменты
OCR PDF — одна плитка в большем наборе PDF. Несколько соседей, которые часто пригождаются:
- Извлечь текст из PDF — сначала бери это, если у PDF уже есть выделяемый текст. Мгновенно и точно, OCR не нужен.
- Извлечь картинки из PDF — вытащить встроенные фотографии как отдельные файлы. Другая задача, не OCR.
- PDF в PNG — отрисовать каждую страницу как изображение без потерь. Полезно, когда нужны картинки страниц рядом с распознанным текстом.
- Разделить PDF — разбить длинный PDF на куски до OCR. Инструмент OCR ограничен 100 страницами за запуск; для длинных документов сначала разбей.
- Сжатие PDF — если скан огромный, сжатие до OCR не повредит точности на 200 DPI и может вернуть число страниц в лимит за запуск.
Microapp шипит каждый PDF-инструмент в браузере, с прописанными на каждой странице компромиссами. 10% от каждого доллара выручки Microapp идут на благотворительность — сверху, с аудитом раз в квартал — поэтому инструмент, которым ты пользуешься, должен реально работать без рекламы поперёк дороги.
Частые вопросы
Как это сравнивается с OCR в Adobe Acrobat?
Честно: Acrobat лучше на сложных входах. Acrobat использует Tesseract плюс слой собственного ML от Adobe для деперекоса, коррекции контраста и языковой постобработки — надёжнее справляется с грязными сканами (плохой свет, повёрнутые страницы, низкий контраст, необычные шрифты). Этот инструмент — голый Tesseract. На чистых машинно-печатных сканах при 200–300 DPI в поддерживаемом языке разрыв небольшой, и взамен ты не загружаешь документ. На сложных сканах Acrobat выигрывает. Предпочитаем сказать это прямо, а не приукрашивать.
Какие языки поддерживает?
Сегодня: английский, испанский, немецкий, французский, португальский, итальянский и русский. Каждый язык — своя модель Tesseract ~5–10 МБ, скачивается при первом использовании и кэшируется. Сам Tesseract поддерживает 100+ языков — если нужен один из не в списке (китайский, японский, арабский, хинди и т. д.), скажи, и мы добавим. Смешанные языки работают лучше, если выбрать доминирующий; Tesseract не очень умеет переключаться между алфавитами на лету.
Работает ли на рукописи?
Почти никогда. Tesseract обучен на машинно-печатном тексте — шрифты, книги, отсканированные печатные документы, вывески. Курсивная рукопись для него по сути нечитаема; очень аккуратный рукописный шрифт иногда работает, но жди серьёзных ошибок. Для OCR рукописи нужна другая модель (у Google Cloud Vision и Microsoft Azure Document Intelligence есть модели, обученные на рукописи). Не будем притворяться, что Tesseract это умеет.
Насколько это быстро?
Две фазы. (1) Загрузка модели: 5–15 секунд при первом выборе языка (~5–10 МБ .traineddata качается). Дальше кэш, последующие запуски в этом браузере мгновенны. (2) Распознавание: ~1–3 секунды на страницу при 200 DPI на современном ноутбуке, ~3–8 секунд при 300 DPI. 20-страничный отчёт при 200 DPI обычно укладывается в 30–60 секунд от и до после первого запуска. Есть кнопка отмены, если передумал на полпути.
Мой PDF правда приватный?
Сам PDF не покидает браузер. pdfjs-dist рендерит страницы локально; Tesseract.js гоняет OCR локально через WebAssembly. Единственный сетевой запрос во время запуска — забрать языковую модель с CDN Tesseract (jsdelivr) в первый раз — это просто публичная статика, та же, что получают все, без данных PDF. Проверь вкладку Network во время распознавания: после загрузки модели ноль исходящих запросов до перезагрузки страницы.
Почему в распознанном тексте ошибки?
OCR изначально неидеален — это сопоставление шаблонов по пикселям. Точность сильно зависит от качества входа: 300 DPI чистый скан стандартного книжного шрифта при хорошем контрасте = часто 98%+. 150 DPI фото мятого чека под люминесцентной лампой = заметно хуже. Частые проблемы: путаница «l» vs «I» vs «1», «O» vs «0», слипшиеся буквы в старых шрифтах, переплетение колонок, сноски, смешавшиеся с основным текстом. Всегда вычитывай OCR-выход, прежде чем доверять ему в юридических, медицинских или финансовых задачах.
Можно ли OCR-ить PDF, в котором уже есть текст?
Можно, но не тот инструмент. PDF со встроенным текстом (всё, что экспортировано из Word, Google Docs, LaTeX или «Сохранить как PDF» из браузера) уже имеет выделяемый текст — гонять по нему OCR значит заново распознавать отрисованные глифы с нуля, что медленнее и менее точно, чем просто прочитать имеющийся текст. Для таких бери инструмент «Извлечь текст из PDF» — мгновенно и точно.
Добавите ли выход в виде searchable PDF?
Да, это план v2. Сейчас выход — простой .txt с распознанными словами. «Searchable PDF» сохраняет оригинальные картинки страниц, но добавляет невидимый текстовый слой сверху — так можно выделять, выбирать и Ctrl-F внутри PDF как в обычном текстовом документе. Это более сложная сборка (надо позиционировать каждое распознанное слово в правильном x/y на странице), и мы захотели сначала выпустить честную .txt-версию. В выборе выхода видно «Searchable PDF — скоро», чтобы было ясно, что план есть.
Какой лимит на размер файла?
50 МБ и 100 страниц за запуск. OCR гораздо тяжелее извлечения текста — каждая страница рендерится в высокого разрешения canvas и проходит через WASM-модель — поэтому лимиты жёстче, чем у других PDF-инструментов. Для больших документов разбей PDF нашим Split PDF и OCR-ь куски по отдельности. На устройстве с малой памятью (телефон, Chromebook с 4 ГБ RAM) даже 100 страниц при 300 DPI могут не уложиться в память; снижай до 200 DPI или режь меньше.