Как прямое решение для PDF (без ручного извлечения изображения):
С использованием ocrmypdf
восстановить OCR (как указано в конце дополнительный часть этого ответа) я заметил, что ocrmypdf -h
показывает вариант, который звучал именно так, как было задано:
--remove-background Попытаться удалить фон с серых или цветных страниц, установив для него белый цвет
В исходном pdf-файле уже было OCR, что выдает ошибку, если не используется один из следующих параметров:
-f, --force-ocr Растрировать любые текстовые или векторные объекты на каждой странице, применять OCR и сохранять растровый вывод (это перезаписывает PDF)
или же
-s, --skip-text Пропустить OCR на любых страницах, которые уже содержат текст, но включить страницу в окончательный вывод; полезно для PDF-файлов, содержащих сочетание изображений, текстовых страниц и/или ранее распознанных страниц.
Применение каждого из них по отдельности к одному из моих больших файлов с сотнями страниц, в которых уже использовалось распознавание символов, привело к сбою процесса.
Лучшее решение мне кажется сначала распечатать в пдф исходный файл (который удаляет OCR), а затем выполните
ocrmypdf input.pdf output.pdf -l <ЯЗЫК> --remove-background -v
Для английского языка -л
опция не нужна. -v
для подробных сведений в терминале.
Полученный PDF больше, чем вход (из-за --удалить фон
вариант): уменьшите размер, как указано ниже.
О Scan Tailor, как дополнение к основной ответ
Даже его значок иллюстрирует тот факт, что он предназначен именно для того, о чем здесь спрашивают:
Вот как использовать Scan Tailor с PDF-файлами:
- Извлечь все страницы PDF в виде файлов изображений - потому что этот инструмент не обрабатывает pdf напрямую и нуждается в изображениях. Master PDF Editor может это сделать, но на моей машине происходит сбой после извлечения около 80 изображений. Но его все еще можно использовать, установив новый пакет/диапазон извлекаемых страниц. (PDF Mod разбился перед какой-либо обработкой). Что я предпочитаю после нескольких испытаний, так это надежный, хотя и более медленный метод CLI, с такой командой, как:
pdftoppm ИМЯ_PDF.pdf -tiff
- как сказал здесь. â Другие переменные могут использоваться вместо размолвка
(который дает тиф
файлы), например png
или же jpeg
. См. здесь набор действий сервисного меню Dolphin для различных вариантов извлечения:
[Вход на рабочий стол]
Тип=Сервис
ServiceTypes=KonqPopupMenu/Плагин
MimeType=application/pdf;
Действия=pdf;tif;jpeg;
X-KDE-Submenu=PDF действие: ИЗВЛЕЧЬ ВСЕ страницы
Значок = приложение-pdf
[Десктопное действие pdf]
Name=Извлечь страницы в формате pdf
Значок = приложение-pdf
Exec=bash -c 'pdf=$(всплеск pdftk "%u"); kdialog --title "Извлечь страницы" --msgbox "Извлечено! $pdf";';
[Действие на рабочем столе tif]
Name=Извлечь страницы как tif
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "Извлечь страницы" --msgbox "Извлечено! $pdf";';
[Действие на рабочем столе в формате jpeg]
Name=Извлечь страницы как jpeg
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "Извлечь страницы" --msgbox "Извлечено! $pdf";';
- Загрузите и обработайте полученные изображения в Scan Tailor.. Поместите полученные файлы изображений в отдельную папку и добавьте эту папку в «Новый проект»> «Входной каталог» в Scan Tailor. (я установил эту программу из ППА, как сказано в комментарии @N0rbert под основным ответом.) Некоторые страницы, содержащие реальные изображения, а не текст, могут выглядеть лучше, если для каждого из них выбрано «Оттенки серого и цвет» вместо стандартного «Черно-белое» (здесь имеется в виду текст). Запустите одну за другой перечисленные процедуры. Проверяйте страницы перед запуском последней («Вывод»).
- Создайте новый PDF-файл из полученных изображений.. (Сначала проверьте полученный
тиф
файлы такие, какие вы хотите.) Есть много способов создать новый PDF. Опять же, инструменты с графическим интерфейсом, которые я пробовал, очень скоро давали сбои или давали странные результаты, поэтому я предпочитаю помещать полученные тиф
файлы в отдельную папку и там выполнить команду img2pdf *.tif -o out.pdf
- как сказал здесь. (Это может потребовать правильного наименования/нумерации файлов. Подробнее об этом здесь.)
Полученный «адаптированный» pdf будет меньше исходного, но процент уменьшения размера варьируется в зависимости от факторов, которые я игнорирую (но я предполагаю, что страницы, содержащиеся в исходном pdf, должны быть извлечены — на шаге 1 — в том формате, который у них уже есть; я думаю, jpeg
и тиф
следует использовать вместо png
; использовать pdfimages - список ваших .pdf
в терминале, чтобы просмотреть сведения о формате, dpi и другие сведения перед обработкой с помощью команд выше и ниже).
Окончательный PDF-файл можно дополнительно уменьшить с помощью такой команды, как:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/электронная книга \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Подробнее об этом, здесь.
Вот набор действий сервисного меню Dolphin по приведенной выше ссылке:
[Вход на рабочий стол]
Тип=Сервис
ServiceTypes=KonqPopupMenu/Плагин
MimeType=application/pdf;
Действия=сжать;сжать0;сжать1;сжать2;
X-KDE-Submenu=PDF действие: СОКРАТИТЬ
Значок = приложение-pdf
[Уменьшить действие на рабочем столе]
Name=Уменьшить pdf до размера "принтера", 300 dpi
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Уменьшить" --msgbox "Готово! $pdf";';
[Действие на рабочем столе уменьшить0]
Name=Уменьшить pdf до размера «prepress», 300 dpi
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Уменьшить" --msgbox "Готово! $pdf";';
[Действие рабочего стола уменьшить1]
Name=Уменьшить pdf до размера электронной книги, 150 dpi
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Уменьшить" --msgbox "Готово! $pdf";';
[Действие на рабочем столе уменьшить2]
Name=Уменьшить pdf до «экранного» размера, 72 dpi
Значок = приложение-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Уменьшить" --msgbox "Готово! $pdf";';
Я получил некоторую помощь от это ответь тоже.
OCR (возможность текстового поиска и копирования) утеряно во время описанной выше процедуры, если он присутствует в исходном PDF-файле. Чтобы получить OCR, используйте
ocrmypdf ввод.pdf вывод.pdf
для английского, как сказал здесь. Для других языков ищите их с помощью apt-кэш поиска tesseract-ocr
, и установите их. Добавлять -l <ЯЗЫК>
в конце команды для определенных языков; более здесь; см. также их имена здесь.
Вот действие меню службы Dolphin для румынского OCR с двумя вариантами (один с прогрессом в терминале и фиксированным именем вывода, другой с фоновым процессом, но с именем вывода на основе ввода; я хотел бы иметь как процесс в терминале, так и имя вывода на основе на вводе, но не знаю как; если кто-то может это сделать, напишите здесь!). Для английского языка замените «румынский» и удалите -л рон
переменная:
[Вход на рабочий стол]
Тип=Сервис
ServiceTypes=KonqPopupMenu/Плагин
MimeType=application/pdf;
Действия=ocr1;ocr2;
X-KDE-Submenu=PDF действие: применить OCR
Значок = приложение-pdf
[Действие на рабочем столе ocr1]
Name=Применить OCR румынский (см. прогресс в терминале; выходное имя: ocr_ro.pdf!)
Значок = приложение-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron
[Действие на рабочем столе ocr2]
Name=Применить OCR румынский (фоновый процесс: НЕТ терминала! ввод>выходное имя)
Значок = приложение-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'
(Извлечение и обработка изображений, а также «печать в формате pdf» удаляет OCR, но уменьшает размер с помощью ghostscript, как указано выше. не, поэтому «сжатие» можно применить до или после OCR.)