Как сжимать файлы PDF в кодировке Tesseract, сохраняя встроенный текст из OCR?

1166
Jason

Я экспериментировал с использованием Tesseract для распознавания моих PDF-файлов, и он был в основном успешным, особенно с текстами немецкого языка Fraktur (готический шрифт старого стиля), которые такие инструменты, как Adobe Acrobat, не могут правильно распознать.

Проблема в том, что выходные файлы из Tesseract довольно большие, и я хочу сжать их после распознавания текста. Однако, когда я использую Ghostscript для сжатия файлов, встроенный текст OCR он испортил. Точно так же, если я использую ImageMagick, встроенный текст удаляется. Это можно обойти? Теоретически я мог бы сжать перед распознаванием, но это ухудшило бы точность распознавания.

Вообще говоря, моя цель состоит в том, чтобы в моих выходных PDF-файлах был встроен высококачественный OCR-текст, а встроенные изображения были бы сильно сжаты, чтобы файлы не занимали почти столько же места. Я обнаружил, что функция Adobe Acrobat Pro «Сохранить как другое> PDF уменьшенного размера» сильно сжимает изображения, но искажает любой текст OCR. Это верно, независимо от того, были ли файлы распознаны в Acrobat или с помощью инструмента, такого как Tesseract.

Вот мой текущий рабочий процесс, используя образец PDF .

Разделить PDF на TIFF файлы

pdftk infile.pdf burst output "temp/page_%03d.pdf" dpi=130 #this is the dpi of the particular file parallel convert -verbose -density $dpi "{}" -depth 8 -background white -compress zip "{}.tiff" ::: temp/*.pdf 

Запустите Tesseract для каждого из файлов TIFF (см . Вывод файла примера )

language=deu_frak parallel tesseract {} {} -l $language pdf ::: temp/*.tiff 
  • Когда я объединить выходной PDF файлы с Ghostscript, я получаю файл, как этот, который щурит встраиваемой текст
  • Когда я комбинировать их с Pdftk (например Pdftk темп / *. PDF выход кот outfile.pdf`), я получаю файл, как этот, который поддерживает встроенный текст, но каким - то образом делает файл больше
  • И затем, когда я пытаюсь сжать этот файл с помощью ImageMagic (например convert -density 130x130 -quality 5 -compress jpeg outfile-pdftk.pdf outfile-pdftk-imagemagick.pdf), он удаляет встроенный текст OCR ( вывод )

Кажется, что Tesseract не сжимает изображения в выходном PDF, что и следовало ожидать - его работа заключается в том, чтобы распечатывать файлы, а не сжимать вывод.

Например, в исходных файлах Tesseract OCR pdfimages -list temp/page_001.pdf.tiff.pdfвыдает:

page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 1067 1508 rgb 3 8 jpeg no 11 0 129 130 318K 6.7% 

... что указывает на то, что объект изображения в PDF-файле точно не хранится оптимально. Это все еще в RGB, не черно-белом. При сжатии с ImageMagick, напротив, pdfimages -listдает:

 pdfimages -list outfile-pdftk-imagemagick.pdf page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 1075 1520 gray 1 8 jpeg no 8 0 130 131 54.0K 3.4% 1 1 smask 1075 1520 gray 1 8 image no 8 0 130 131 25.1K 1.6% 2 2 image 1075 1520 gray 1 8 jpeg no 22 0 130 131 59.9K 3.8% 2 3 smask 1075 1520 gray 1 8 image no 22 0 130 131 25.1K 1.6% 3 4 image 1075 1520 gray 1 8 jpeg no 36 0 130 131 45.2K 2.8% 3 5 smask 1075 1520 gray 1 8 image no 36 0 130 131 25.1K 1.6% 4 6 image 1075 1520 gray 1 8 jpeg no 50 0 130 131 62.8K 3.9% 4 7 smask 1075 1520 gray 1 8 image no 50 0 130 131 25.1K 1.6% 5 8 image 1075 1520 gray 1 8 jpeg no 64 0 130 131 61.1K 3.8% 5 9 smask 1075 1520 gray 1 8 image no 64 0 130 131 25.1K 1.6% 6 10 image 1075 1520 gray 1 8 jpeg no 78 0 130 131 63.4K 4.0% 6 11 smask 1075 1520 gray 1 8 image no 78 0 130 131 25.1K 1.6% 7 12 image 1075 1520 gray 1 8 jpeg no 92 0 130 131 65.1K 4.1% 7 13 smask 1075 1520 gray 1 8 image no 92 0 130 131 25.1K 1.6% 8 14 image 1075 1520 gray 1 8 jpeg no 106 0 130 131 61.0K 3.8% 8 15 smask 1075 1520 gray 1 8 image no 106 0 130 131 25.1K 1.6% 9 16 image 1075 1520 gray 1 8 jpeg no 120 0 130 131 66.8K 4.2% 9 17 smask 1075 1520 gray 1 8 image no 120 0 130 131 25.1K 1.6% 10 18 image 1075 1520 gray 1 8 jpeg no 134 0 130 131 65.6K 4.1% 10 19 smask 1075 1520 gray 1 8 image no 134 0 130 131 25.1K 1.6% 

Как мы видим, изображения занимают меньше места, однако текст, встроенный в OCR, был удален, а файл как-то меньше. Для сравнения, если я возьму исходный файл (без текста, встроенного в OCR) и сожму его, используя Adobe Acrobat «Сохранить как другое> PDF уменьшенного размера», я получу:

 pdfimages -list infile-adobe.pdf  page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 1000 1499 gray 1 8 jpx no 38 0 129 129 78.1K 5.3% 2 1 image 1000 1499 gray 1 8 jpx no 3 0 129 129 89.1K 6.1% 3 2 image 1000 1499 gray 1 8 jpx no 6 0 129 129 65.6K 4.5% 4 3 image 1000 1499 gray 1 8 jpx no 9 0 129 129 97.7K 6.7% 5 4 image 1000 1499 gray 1 8 jpx no 12 0 129 129 95.4K 6.5% 6 5 image 1000 1499 gray 1 8 jpx no 15 0 129 129 98.7K 6.7% 7 6 image 1000 1499 gray 1 8 jpx no 18 0 129 129 102K 6.9% 8 7 image 1000 1499 gray 1 8 jpx no 21 0 129 129 94.6K 6.5% 9 8 image 1000 1499 gray 1 8 jpx no 24 0 129 129 105K 7.2% 10 9 image 1000 1499 gray 1 8 jpx no 27 0 129 129 103K 7.1% 

... Как мы видим, Adobe Acrobat, по-видимому, сжимает изображения с использованием JPEG2000 (JPX), который недоступен Ghostscript или ImageMagick из-за проблем с патентами.

В целом, есть ли какие-либо предложения о том, как сжимать файлы PDF Tesseract-OCR?

2
Одним из «странных» инструментов, которые я использую, является [PDFFill] (https://www.pdfill.com/freewriter_pdf.html#1), который имеет функцию для оптимизации PDF-файлов. Я не уверен, что он может обрабатывать JPEG2000, но стоит попробовать. le_top 7 лет назад 0
Зачем вам нужны изображения? Кажется, они содержат только фон для текста. Без них файл будет занимать около 70 К (проверено, хотя у меня нет хорошего редактора PDF, и текст впоследствии был в плохом порядке). harrymc 7 лет назад 0
@harrymc Мне нужны изображения, потому что я хочу пометить их заметками, а также потому, что OCR не на 100% точен. Таким образом, я могу увидеть оригинал и работать с ним в моем PDF-ридере. Jason 7 лет назад 0
Если я правильно понимаю, вы объединяете в один pdf скопированный текст и исходное изображение страницы. Поскольку размер текста незначителен, единственное улучшение, которое вы можете сделать, - это минимизировать изображения, преобразовав их в какой-либо формат с потерями - jpeg Лучше всего использовать низкое качество и высокое сжатие (для четкости текста вам не нужно высокое качество). harrymc 7 лет назад 0
@harrymc Правильно, когда есть текст, я хочу сжать изображения, но сжатие с использованием ghostscript или даже Adobe, похоже, искажает текст OCR, что затем наносит ущерб всей цели. См., Например, [этот выходной файл, который я OCR сделал с Tesseract, а затем сжал с помощью Ghostscript, что привело к искажению и разрушению текста OCR.] (Https://www.dropbox.com/s/pt3qokaj0d4sc8l/outfile- ghostscript.pdf? dl = 0) Попробуйте скопировать / вставить часть текста. Jason 7 лет назад 0
Похоже, что вы сжимаете весь PDF, а не сжимаете изображения и затем создаете PDF. harrymc 7 лет назад 0
@ Джейсон Младший пункт ... Если вы не планируете размещать файлы на неопределенный срок, пожалуйста, не связывайтесь с Dropbox. Я бы очень хотел увидеть ваш изуродованный PDF-файл, а он 404. Basic 5 лет назад 0

0 ответов на вопрос

Похожие вопросы