Что делает инструмент
Извлечение текста из PDF — частая задача: переслать содержание договора в чат, скопировать книгу для обработки, экспортировать научную статью для последующей цитаты. Acrobat Reader умеет копировать текст, но только постранично; здесь — сразу весь PDF в один файл.
Используется pdfjs-dist — это та же библиотека, что встроена в Firefox для рендеринга PDF. Она проверена на миллионах документов и поддерживает все стандартные PDF (с текстовым слоем). Работа полностью в браузере: PDF не отправляется на сервер.
Когда работает / не работает
Инструмент работает когда в PDF есть текстовый слой:
- ✅ Сгенерированные PDF (из Word, LibreOffice, LaTeX, веб-страниц) — текст выделяется в Acrobat, мы его извлечём.
- ✅ Сканы с уже примененным OCR — если над сканом провели распознавание (Adobe Acrobat OCR, ABBYY FineReader), текстовый слой есть и работает.
Не работает когда текстового слоя нет:
- ❌ Чистые сканы — каждая страница это просто JPEG/TIFF в обёртке PDF. Нужно OCR.
- ❌ PDF из фото с телефона — то же самое, нет текстового слоя.
- ❌ Зашифрованные PDF с защитой от копирования — pdfjs-dist уважает permission flags (но это легко обходится в платных инструментах; мы соблюдаем).
pdf.js extracts text content per-page via getTextContent(). Each text item has x/y coordinates from the PDF's content stream, allowing reconstruction of reading order via positional heuristics.— Mozilla pdf.js documentation
Форматы вывода
- Plain text — без разделителей. Используйте для последующей обработки: индексация, корпус для NLP, копирайтинг.
- С разделителями страниц — добавляется
--- Page N ---между страницами. Самый удобный для чтения и быстрого поиска. - JSON — массив
{ page: N, text: "..." }. Для разработчиков, импорта в Python/Node.js скрипты.
Особенности и ограничения
- Порядок чтения. Reconstructed по координатам Y → X. На двухколоночных документах (научные статьи в LaTeX) может быть путаница — колонки сольются в одну строку. Для обычных документов работает хорошо.
- Сноски и колонтитулы. Извлекаются как отдельные строки, перемежаются с основным текстом. Для чистого извлечения — потребуется ручная правка или специализированный парсер.
- Таблицы. Текст внутри таблицы извлекается, но без структуры — ячейки превращаются в обычные строки, разделённые пробелами/переводами. Для сохранения табличной структуры используйте PDF → Excel / DOCX (план).
- Лигатуры и спец-символы. Обычно работают (Unicode), но кастомные шрифты могут давать «глюки» — символы вне таблицы Unicode остаются как есть.
- pdfjs-dist · PDF rendering library by Mozilla. Mozilla Foundation. github.com/mozilla/pdf.js. 2024.
- PDF 1.7 Specification (ISO 32000-1) §9 — Text. ISO. iso.org. 2008.
- Unicode Standard Annex #29 — Text Boundaries. Unicode Consortium. unicode.org. 2024.
