Làm cách nào để nén các tệp PDF được mã hóa Tesseract trong khi duy trì văn bản nhúng từ OCR?


3

Tôi đã thử nghiệm sử dụng Tesseract để OCR các tệp PDF của tôi và nó hầu như thành công, đặc biệt là với các văn bản Fraktur của Đức (bản in gothic kiểu cũ), những công cụ như Adobe Acrobat không thể nhận ra đúng.

Vấn đề là các tệp đầu ra từ Tesseract khá lớn và tôi muốn nén chúng sau OCRing. Tuy nhiên, khi tôi sử dụng Ghostscript để nén các tệp, văn bản OCR được nhúng mà anh ấy đã gửi nhầm. Tương tự, nếu tôi sử dụng ImageMagick, văn bản nhúng sẽ bị xóa. Có cách nào để giái quyết vấn đề này không? Về mặt lý thuyết tôi có thể nén trước OCRing nhưng điều đó sẽ làm cho độ chính xác của OCR tồi tệ hơn.

Nói chung, mục tiêu của tôi là có văn bản nhúng OCR chất lượng cao trong các tệp PDF đầu ra của mình và để các hình ảnh nhúng được nén cao để các tệp không chiếm nhiều dung lượng. Tôi đã thấy rằng tính năng Adobe Acrobat Pro "Lưu dưới dạng khác> Giảm kích thước PDF" nén rất nhiều hình ảnh nhưng lại làm hỏng bất kỳ văn bản OCR'd nào. Điều này đúng cho dù các tệp là OCR'd trong Acrobat hoặc sử dụng một công cụ như Tesseract.

Đây là quy trình làm việc hiện tại của tôi, sử dụng pdf mẫu .

Tách PDF thành các tệp 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

Chạy Tesseract trên mỗi tệp TIFF (xem đầu ra của tệp mẫu )

language=deu_frak
parallel tesseract {} {} -l $language pdf ::: temp/*.tiff
  • Khi tôi kết hợp các tệp PDF đầu ra với Ghostscript, tôi nhận được một tệp như thế này , làm hỏng văn bản nhúng
  • Khi tôi kết hợp chúng với PDFtk (ví dụ pdftk temp / *. Pdf cat output outfile.pdf`), tôi nhận được một tệp như thế này , duy trì văn bản nhúng nhưng bằng cách nào đó làm cho tệp lớn hơn
  • Và sau đó khi tôi cố nén tệp đó bằng ImageMagic (ví dụ convert -density 130x130 -quality 5 -compress jpeg outfile-pdftk.pdf outfile-pdftk-imagemagick.pdf), nó sẽ xóa văn bản OCR được nhúng ( đầu ra )

Có vẻ như Tesseract không nén hình ảnh trong tệp PDF đầu ra, điều được mong đợi - công việc của nó là OCR các tệp, không nén đầu ra.

Chẳng hạn, trên các tệp Tesseract OCR'd ban đầu, pdfimages -list temp/page_001.pdf.tiff.pdftạo ra:

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%

... cho biết đối tượng hình ảnh trong PDF không được lưu trữ chính xác tối ưu. Nó vẫn ở dạng RGB, không phải màu đen và trắng. Ngược lại, khi nén bằng ImageMagick, pdfimages -listsẽ cho:

  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%

Như chúng ta có thể thấy các hình ảnh chiếm ít không gian hơn, tuy nhiên văn bản nhúng OCR đã bị xóa và bằng cách nào đó, tệp ít hơn. Để so sánh, nếu tôi lấy tệp gốc (không có văn bản nhúng OCR) và nén tệp bằng "Lưu dưới dạng khác> Giảm kích thước PDF" của Adobe Acrobat, tôi nhận được:

  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%

... Như chúng ta có thể thấy, Adobe Acrobat dường như nén hình ảnh bằng JPEG2000 (JPX) không có sẵn cho Ghostscript hoặc ImageMagick do vấn đề bằng sáng chế.

Nhìn chung, có gợi ý nào về cách nén tệp PDF Tesseract-OCR'd không?


ONe của các công cụ "lẻ" tôi sử dụng là PDFFill có chức năng tối ưu hóa các tệp PDF. Tôi không chắc chắn rằng nó có thể xử lý JPEG2000 nhưng nó đáng để thử.
le_top

Tại sao bạn cần những hình ảnh? Chúng dường như chỉ chứa nền cho văn bản. Nếu không có chúng, tệp sẽ mất khoảng 70 K (đã được kiểm tra, mặc dù tôi không có trình chỉnh sửa pdf tốt và văn bản bị lỗi sau đó).
harrymc

@harrymc Tôi cần những hình ảnh vì tôi muốn đánh dấu chúng bằng ghi chú và cũng vì OCR không chính xác 100%. Bằng cách đó tôi có thể thấy bản gốc và làm việc với nó trong trình đọc pdf của mình.
Jason

Nếu tôi hiểu chính xác, bạn kết hợp thành một pdf văn bản được tô màu và trang gốc - kích thước văn bản là không đáng kể, cải tiến duy nhất bạn có thể làm là giảm thiểu hình ảnh bằng cách chuyển đổi chúng sang định dạng mất dữ liệu - jpeg là tốt nhất bằng cách sử dụng chất lượng thấp và độ nén cao (để văn bản dễ đọc, bạn không cần chất lượng cao).
harrymc

@harrymc Đúng vậy, một khi có văn bản tôi muốn nén hình ảnh, nhưng nén bằng ghostscript hoặc thậm chí Adobe dường như làm hỏng văn bản OCR'd sau đó đánh bại toàn bộ mục đích. Ví dụ, xem tệp đầu ra này, mà tôi OCR'd với Tesseract và sau đó được nén bằng Ghostscript, dẫn đến văn bản OCR bị xáo trộn và phá vỡ. Hãy thử sao chép / dán một số văn bản.
Jason
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.