Как оставить изображение 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- файлом, который уже был очищен для удобства распознавания:

  1. Сделайте резервные копии оригинального PDF. Если вы все испортите, у вас будет резервная копия.
  2. Бежать pdfimages -list original.pdf
  3. Используйте калькулятор, чтобы умножить вместе ширину и высоту изображения. Скажем, изображение 192 × 643. Умножая это, мы получаем 123456. Мы используем это на следующем шаге.
  4. Бежать pdfsandwich -nopreproc -maxpixels 123456 original.pdf

Теперь у нас есть OCRed PDF с изображениями, которые мы хотим заменить. Эта часть немного сложнее.

  1. Бежать pdfimages -list original.pdf
  2. Запишите номер объекта в оригинальном PDF. Допустим, это 123. Мы используем это ниже.
  3. Бежать pdfimages -list original_ocr.pdf
  4. Запишите номер объекта в OCRed PDF. Допустим, это 456. Мы используем это ниже.
  5. Откройте как исходный, так и OCRed PDF в текстовом редакторе, который может правильно обрабатывать копирование и вставку двоичных двоичных объектов.
  6. Найти строку 123 0 obj в оригинальном PDF. Скопируйте строку под ней вместе со всеми последующими строками до следующего endobj линия.
  7. Найти строку 456 0 obj в OCRed PDF. Стереть строку ниже этой вместе со всеми последующими строками до следующего endobj линия. Замените удаленные строки, вставив то, что вы скопировали из исходного PDF.
  8. Сохраните OCRed PDF как новое имя файла.
  9. Откройте новое имя файла из предыдущего шага в вашей программе просмотра PDF, чтобы убедиться, что вы видите страницу, есть ли текст OCRed и т. Д.
  10. Закройте текстовый редактор без сохранения.
Другие вопросы по тегам