Рейтинг:9

Получение готового к печати черного текста на белом фоне в отсканированных файлах PDF (удаление оттенков серого или цветного фона)

флаг br

Как превратить фотографии бумажных документов в отсканированный документ? связано, но не то же самое, поскольку я говорю о файлах pdf. Обработка изображений кажется сложной в ответах на связанный вопрос, особенно потому, что она включает обработка каждого изображения отдельно: данный мой pdf имеет сотни страниц, решение, которое я ожидаю, это не обработка/редактирование изображений, а просто сканирование цифровых фотографий и документов, как настоящие. Я имею в виду что-то вроде «виртуального сканера», для которого на входе будет pdf-файл на основе фотографий или коллекция фотографий, а на выходе — «обычный» отсканированный документ. (Так же Сканпорт рекомендуемый инструмент - также здесь - кажется, теперь не хватает версии для Linux.)


Это нет об распознавании текста и нет о преобразовании изображения в текст.

Чтобы пояснить, что я имею в виду, я опубликую несколько примеров.

Есть pdf файлы на основе текста, а не изображение, и это текстовые файлы (скажем, docx или odt), экспортированные в pdf. Они выглядят готовыми к печати:

введите описание изображения здесь

Вышеупомянутое нет что я здесь обсуждаю.

Меня интересуют pdf-файлы на изображениях ниже, а именно разница между отсканированными текстовыми страницами, которые слишком похожи на изображения, и отсканированными текстовыми страницами, которые выглядят как оцифрованный текст.

Первые формируются из изображений, похожих на фотографии сделаны страниц книги:

введите описание изображения здесь

или же

введите описание изображения здесь

Такие копии вряд ли можно перепечатать на бумаге, так как фон тоже будет распечатан.

Вторые - это то, что можно было бы ожидать от отсканировано текст и может быть распечатан:

введите описание изображения здесь

или же

введите описание изображения здесь

PDF-файл, похожий на картинку, уже может быть обработан распознаванием текста, и его текст доступен для поиска, но все еще выглядит как коллекция фотографий (страниц): здесь проблема не в распознавании текста.

Чего я хочу, так это четкого черно-белого вида «отсканированного» PDF-файла и удаления всех «настоящих» деталей (особенно теней), которые являются нормальными на фотографии, но должны отсутствовать на печатной странице.


Как заметил @vanadium в комментарии, я ищете программное решение, которое автоматически очищает изображения документа, как Google Scan на смартфоне.

Как сказал @ user535733 в комментарии, проблема здесь, по крайней мере, в некоторой степени, заключается в преобразовании оттенки серого (сканированный/изображение) текст к черно-белому.

pLumo avatar
флаг in
Прежде всего, я не думаю, что ваш вопрос связан с Ubuntu. Как это исправить, довольно просто, как указано в другом вопросе, но вы хотите как-то автоматизировать задачу, поэтому ваш вопрос больше похож на задачу программирования, которая лучше подходит для других сайтов в сети. Кроме того, вы также не предоставляете ничего, что пробовали, и не представляете, с чего начать. И я также не понимаю, почему PDF-файл на основе JPEG отличается от изображения, поэтому правильным ответом является обработка изображения, хотя и не вручную.
флаг br
@pLumo - я ищу инструмент Ubuntu для сканирования цифровых документов так, как настоящий сканер делает это для реальных документов.
Thomas Weller avatar
флаг ru
ИМХО, вы хотите невозможного: вы не хотите обработки изображений, но это именно то, что должен делать виртуальный сканер. Linux и Ubuntu упрощают запуск утилиты в каталоге, полном файлов. Обычно достаточно изменения контрастности и яркости.
Thomas Weller avatar
флаг ru
Кстати: довольно серый пример - это не фотография: он отсканирован. Там, где книга складывается, свет отражается, и из-за угла отражения становится ярче внутри, хотя это дальше от источника света, и можно было бы ожидать, что он будет темнее. Этого бы не случилось с фотографией. Одним из решений является сканирование только одной страницы за раз вместо двух страниц. Для этого люди строят специальные сканеры: книги не будут лежать плашмя.
флаг br
@ThomasWeller - я не имею в виду, что отказываюсь от какой-либо обработки изображений, просто ручная настройка того, как рекомендуется GIMP. Практически я ищу что-то вроде простого сканирования или сканлайта, но это будет вводить цифровые документы вместо реальных с настоящего сканера. (Кроме того, тот факт, что в этом документе страницы на самом деле отсканированы и просто *выглядят* как фотографии, не является проблемой: мне нужно, чтобы они выглядели более голым/простым отсканированным текстом.)
vanadium avatar
флаг cn
@ThomasWeller не совсем невозможно. Это то, что доступно на смарт-фото. OP просто ищет программное решение, которое автоматически очищает изображения документа, как Google Scan на смартфоне.
user535733 avatar
флаг cn
Похоже, вы хотите взять *изображение в оттенках серого*, содержащее несколько страниц, и *обработать это изображение* , разделив отдельные страницы, выровняв страницы, преобразовав оттенки серого в черно-белые и иным образом улучшив читаемость. Ничто из этого не требует сбивающего с толку термина «сканирование» в заголовке или основной части вопроса.
флаг vn
Отвечает ли это на ваш вопрос? [Как удалить фон страницы в оттенках серого при сканировании документа PDF, сохранив при этом текст? (Бинаризация)] (https://askubuntu.com/questions/396437/how-can-i-remove-the-gray-scale-page-background-of-a-pdf-document-scan-while-pre)
karel avatar
флаг sa
@PabloBianchi Я проголосовал за то, чтобы оставить этот вопрос открытым, и закрыл ваш связанный дубликат вопроса как дубликат этого вопроса, потому что ответы на этот вопрос более актуальны.
karel avatar
флаг sa
@cipricus Пожалуйста, закройте голосование за [этот вопрос] (https://askubuntu.com/q/396437/) как дубликат вашего более актуального вопроса.
флаг vn
@karel Вы уверены, что ответы здесь более актуальны? У меня сложилось обратное впечатление, тоже с более низким качеством..
Рейтинг:10
флаг in

портной больше не поддерживается, но вы все еще можете собрать его из исходного кода и использовать.

Однако оригинальный репозиторий потребности qt4, который нелегко установить в последних версиях Ubuntu. Вы можете использовать, например. эта вилка который приспособился к qt5.

Предпосылки:

sudo apt install libjpeg-dev zlib1g-dev libpng-dev libtiff-dev libboost-dev libxrender-dev libboost-all-dev

Установка:

git клон https://github.com/victl/scantailor
CD Scantailor
сделай .
делать
судо сделать установить

Отказ от ответственности: я не знаю мейнтейнера этого форка и ничего не могу сказать о безопасности его версии.


Другой вариант было бы использовать Сканпорт продвинутый. Вы можете установить его через щелчок ...

sudo snap установить scantailor-advanced

... или же плоский пакет.

... или через ппа.

sudo add-apt-repository ppa: alex-p/scantailor
судо подходящее обновление
sudo apt install scantailor # или scantailor-advanced

Быстрый тест:

введите описание изображения здесь

флаг br
Я нашел решение, которое работает непосредственно с файлами PDF, и разместил его вместе с моим «дополнительным» ответом.
Рейтинг:2
флаг br

Как прямое решение для 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-файлами:

  1. Извлечь все страницы 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";';
  1. Загрузите и обработайте полученные изображения в Scan Tailor.. Поместите полученные файлы изображений в отдельную папку и добавьте эту папку в «Новый проект»> «Входной каталог» в Scan Tailor. (я установил эту программу из ППА, как сказано в комментарии @N0rbert под основным ответом.) Некоторые страницы, содержащие реальные изображения, а не текст, могут выглядеть лучше, если для каждого из них выбрано «Оттенки серого и цвет» вместо стандартного «Черно-белое» (здесь имеется в виду текст). Запустите одну за другой перечисленные процедуры. Проверяйте страницы перед запуском последней («Вывод»).

введите описание изображения здесь

  1. Создайте новый 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.)

Рейтинг:1
флаг tr

Я получил довольно хороший результат, используя imageMagick и следующий скрипт http://www.fmwconcepts.com/imagemagick/shadowhighlight/index.php

Вот результат с использованием следующих параметров:

./shadowhighlight -ma 100 -sa 100 -ha 00 -hw 0 -bc 20 inputFile.png OutputFile.png

введите описание изображения здесь

флаг br
Вы имеете в виду, что можете использовать простое сканирование для ввода уже существующих цифровых изображений?
флаг tr
Хо, так что вы ищете не программу сканера, а программное обеспечение для автоматической обработки изображений. Если это так, взгляните на https://imagemagick.org/, он сделает свою работу, но вам нужно будет найти правильные настройки.
флаг br
можем ли мы применить эту команду к сотням страниц одновременно?
Рейтинг:1
флаг by

Просто установите Gimp (предпочтительно используйте appimage). Ниже приведены варианты:

  1. Выберите «Цвет»> «Порог», и ваше изображение будет черно-белым. для этого вы должны сделать это для каждой страницы

Второй вариант 2) Выберите «Изображение»> «Режим»> «Индексированный»> «Использовать черно-белую 1-битную палитру».

Любое количество страниц в вашем PDF-файле будет преобразовано в 1-битный черно-белый.

Редактировать 11.02.2021: в соответствии с запросом, поднятым ципирик

Вот шаги, которым я следую:

  1. Сканируйте страницы с помощью «простого сканирования» или Xsane. (Я обнаружил, что простое сканирование лучше работает в цвете) ИЛИ используйте уже доступный отсканированный PDF-файл.
  2. Файл> открыть ИЛИ перетащить PDF-файл в GIMP. Здесь вам нужно указать ширину X высоты изображения, которое вам нужно. (Проверьте, какой dpi вам нужен, 150 dpi или 300 dpi укажите значение ширины соответственно)
  3. Теперь файл PDF с более чем 1 страницей открывается как слои.
  4. Перейдите в «Изображение»> «Режим»> «Индексированный»> «Использовать черно-белую 1-битную палитру».
  5. Теперь я экспортирую PDF-файл, используя «Файл»> «Экспортировать как».
  6. Проверьте, соответствует ли каждая страница экспортированного PDF-файла требованиям. Если нет, я индивидуально обрабатываю каждую дефектную страницу следующим методом: а) Выберите «Изображение»> «Режим»> «Оттенки серого». b) (Если на странице слишком много серого/шумов) Выберите «Цвет» > «Экспозиция» и отрегулируйте в соответствии с потребностями. c) Выберите Цвет> Порог, и ваше изображение будет черно-белым. для этого вы должны сделать это для каждой бракованной страницы, чтобы она соответствовала требуемому качеству. г) Теперь я вставляю эту отредактированную страницу в этот слой исходных слоев pdf-файла и удаляю слой дефектной страницы. и снова экспортируйте PDF. Надеюсь, это поможет.
флаг br
Вы имеете в виду, что при втором варианте можно выбрать и обработать сотни страниц/изображений?
Ajay avatar
флаг by
Да, на самом деле во втором варианте нет необходимости выбирать страницы. Вы просто измените цвет с RGB, серого или CMYK на 1-битный черно-белый. так что будет только два оттенка черный или белый, как фотокопия.
флаг br
Очевидно, что здесь может учитываться только второй вариант (обработка каждой страницы в 400+ страниц pdf невозможна). Не могли бы вы подробнее рассказать о варианте 2? как обработать пдф? Должны ли страницы сначала извлекаться как изображения? Или pdf должен быть открыт как таковой в Gimp?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.