Как оставить изображение PDF без изменений при добавлении OCR в PDF с pdfsandwich?
Я пытаюсь добавить OCR в PDF-файлы и использую для этого pdfsandwich. Проблема в том, что pdfsandwich обрабатывает изображение при распознавании, которое меняет внешний вид документа.
Есть ли способ гарантировать, что изображение PDF остается полностью неизменным? если это невозможно с помощью pdfsandwich, было бы приемлемо выполнить это с помощью альтернативного приложения.
Пример перед:
Вы можете легко увидеть падение качества после запуска pdf через pdfsandwich.
Я просмотрел документацию pdfsandwich и не смог ничего найти о том, как оставить изображение без изменений.
2 ответа
Я связался с Tobial Elze, создателем pdfsandwich, с моим вопросом. Вот их ответ:
Я полностью осознаю, что вы имеете в виду, и я согласен, что это будет полезной функцией. В настоящее время невозможно полностью сохранить исходное изображение, потому что pdfsandwich вызывает Tesseract для создания окончательного PDF-файла, который внутренне выполняет некоторую обработку, которая выходит за рамки и не контролирует pdfsandwich.
По умолчанию pdfsandwich преобразует входные изображения в черно-белые, как вы можете видеть в своем собственном примере. Вы можете приблизиться к исходному изображению, принудив его использовать цвет (для цветных изображений) с помощью опции -rgb или, как в вашем случае, серую шкалу с помощью опции -gray. Вы можете попробовать последний вариант на своем примере, чтобы увидеть, улучшится ли он.
Кроме того, если вы обнаружите, что функции "улучшения" pdfsandwich до OCR не улучшают изображение, а скорее ухудшают его, вы можете отключить всю предварительную обработку с помощью опции -nopreproc.
Надеюсь, это поможет?
Поскольку мои PDF-файлы уже серого цвета, просто добавив флаг -gray
кажется, сохранить оригинальное качество. -rgb
эквивалентный флаг для цветных изображений.
У меня было такое же желание, потому что pdfsandwich плохо сжимал крошечные изображения PDF, увеличивая размер файла PDF. Вот сложный способ, которым я справился с одностраничным PDF- файлом, который уже был очищен для удобства распознавания:
- Сделайте резервные копии оригинального PDF. Если вы все испортите, у вас будет резервная копия.
- Бежать
pdfimages -list original.pdf
- Используйте калькулятор, чтобы умножить вместе ширину и высоту изображения. Скажем, изображение 192 × 643. Умножая это, мы получаем 123456. Мы используем это на следующем шаге.
- Бежать
pdfsandwich -nopreproc -maxpixels 123456 original.pdf
Теперь у нас есть OCRed PDF с изображениями, которые мы хотим заменить. Эта часть немного сложнее.
- Бежать
pdfimages -list original.pdf
- Запишите номер объекта в оригинальном PDF. Допустим, это 123. Мы используем это ниже.
- Бежать
pdfimages -list original_ocr.pdf
- Запишите номер объекта в OCRed PDF. Допустим, это 456. Мы используем это ниже.
- Откройте как исходный, так и OCRed PDF в текстовом редакторе, который может правильно обрабатывать копирование и вставку двоичных двоичных объектов.
- Найти строку
123 0 obj
в оригинальном PDF. Скопируйте строку под ней вместе со всеми последующими строками до следующегоendobj
линия. - Найти строку
456 0 obj
в OCRed PDF. Стереть строку ниже этой вместе со всеми последующими строками до следующегоendobj
линия. Замените удаленные строки, вставив то, что вы скопировали из исходного PDF. - Сохраните OCRed PDF как новое имя файла.
- Откройте новое имя файла из предыдущего шага в вашей программе просмотра PDF, чтобы убедиться, что вы видите страницу, есть ли текст OCRed и т. Д.
- Закройте текстовый редактор без сохранения.