Як стиснути PDF-файли, кодовані Tesseract, зберігаючи вбудований текст з OCR?


3

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

Проблема полягає в тому, що вихідні файли Tesseract досить великі, і я хочу їх стиснути після OCRing. Однак, коли я використовую Ghostscript для стискання файлів, вбудований текст OCR він зіпсував. Аналогічно, якщо я використовую ImageMagick, вбудований текст видаляється. Чи є шлях до цього? Теоретично я міг би стискатися перед OCRing, але це призведе до погіршення точності OCR.

Взагалі кажучи, моя мета - мати якісний вбудований OCR текст у мої вихідні PDF-файли, а вкладені зображення сильно стискатись, щоб файли не займали майже стільки місця. Я виявив, що функція Adobe Acrobat Pro "Зберегти як інше> PDF зі зменшеним розміром" сильно стискає зображення, але вкручує будь-який текст OCR'd. Це правда, чи файли були OCR'd в 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-файлі, чого можна очікувати - його завдання полягає в тому, щоб OCR-файли не стискали вихід.

Наприклад, з початкових файлів OCR'd Tesseract 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 тексту) і стискаю його за допомогою програми "Зберегти як інше> PDF зі зменшеним розміром" Adobe Acrobat, я отримаю:

  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'd?


ONe "незвичайних" інструментів, які я використовую, - це PDFFill, який має функцію оптимізації PDF-файлів. Я не впевнений, що він може працювати з JPEG2000, але варто спробувати.
le_top

Для чого потрібні зображення? Вони ніби містять лише тло тексту. Без них файл займе близько 70 К (протестовано, хоча у мене немає гарного редактора PDF, і текст згодом був у поганому порядку).
harrymc

@harrymc Мені потрібні зображення, тому що я хочу відзначити їх нотами, а також тому, що OCR не на 100% точний. Таким чином я бачу оригінал та працюю з ним у своєму читальнику PDF.
Джейсон

Якщо я правильно зрозумів, ви поєднуєте в один pdf текст, що зафіксований, та оригінальну сторінку-зображення. Оскільки розмір тексту є незначним, єдине поліпшення, яке ви можете зробити, - це мінімізувати зображення, перетворивши їх у якийсь згубний формат - jpeg найкраще використовувати низьку якість та високу компресію (щоб текст був розбірливим, вам не потрібна висока якість).
harrymc

@harrymc Право, як тільки текст є, я хочу стиснути зображення, але стискання за допомогою ghostscript або навіть Adobe, здається, накручує текст OCR'd, який потім перемагає цілі. Дивіться, наприклад, цей вихідний файл, який я OCR'd з Tesseract, а потім стиснути з Ghostscript, що призводить до того, що текст OCR піддається керуванню та порушенню. Спробуйте скопіювати / вставити частину тексту.
Джейсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.