Là một giải pháp trực tiếp trên PDF (không trích xuất hình ảnh thủ công):
sử dụng ocrmypdf
để khôi phục OCR (như đã đề cập ở phần cuối của bổ túc một phần của câu trả lời này) Tôi đã nhận thấy rằng ocrmypdf -h
hiển thị một tùy chọn nghe có vẻ chính xác như những gì được hỏi:
--remove-background Cố gắng xóa nền khỏi các trang màu xám hoặc màu, đặt thành màu trắng
Bản pdf ban đầu đã có OCR, sẽ báo lỗi trừ khi sử dụng một trong các tùy chọn sau:
-f, --force-ocr Rasterize bất kỳ đối tượng văn bản hoặc vectơ nào trên mỗi trang, áp dụng OCR và lưu đầu ra được quét (điều này viết lại PDF)
hoặc
-s, --skip-text Bỏ qua OCR trên bất kỳ trang nào đã chứa văn bản, nhưng đưa trang này vào đầu ra cuối cùng; hữu ích cho các tệp PDF chứa hỗn hợp hình ảnh, trang văn bản và/hoặc các trang OCRed trước đó
Áp dụng riêng từng cái cho một trong các tệp lớn của tôi với hàng trăm trang đã bị OCR làm hỏng quy trình.
Giải pháp tốt nhất dường như với tôi đầu tiên in sang pdf tệp ban đầu (loại bỏ OCR), rồi thực hiện
ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v
Đối với tiếng Anh, -l
tùy chọn là không cần thiết. -v
là để biết chi tiết dài dòng trong thiết bị đầu cuối.
PDF kết quả lớn hơn đầu vào (vì --xóa khung nền
tùy chọn): giảm kích thước như đã nói bên dưới.
Giới thiệu về Scan Tailor, như một phần bổ sung cho câu trả lời chính
Ngay cả biểu tượng của nó cũng minh họa thực tế rằng nó được dự định chính xác cho những gì được hỏi ở đây:
Đây là cách sử dụng Scan Tailor với pdf:
- Trích xuất tất cả các trang pdf dưới dạng tệp hình ảnh - bởi vì công cụ này không xử lý pdf trực tiếp và cần hình ảnh. Master PDF Editor có thể thực hiện việc này nhưng trên máy của tôi, nó bị treo sau khi giải nén khoảng 80 hình ảnh. Nhưng nó vẫn có thể được sử dụng bằng cách đặt một lô/phạm vi trang mới sẽ được trích xuất. (PDF Mod bị lỗi trước khi xử lý). Điều tôi thích sau một vài thử nghiệm là phương pháp CLI đáng tin cậy mặc dù chậm hơn, với một lệnh như:
pdftoppm MY_PDF.pdf TÊN -tiff
- như đã nói đây. â Các biến khác có thể được sử dụng thay vì tiff
(mà mang lại tif
tập tin), ví dụ png
hoặc jpeg
. Xem tại đây một tập hợp các hành động menu dịch vụ Dolphin để biết các tùy chọn trích xuất khác nhau:
[Mục nhập máy tính để bàn]
Loại=Dịch vụ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ứng dụng/pdf;
Thao tác=pdf;tif;jpeg;
X-KDE-Submenu=Thao tác PDF: TRÍCH TẤT CẢ các trang
Biểu tượng=ứng dụng-pdf
[Hành động trên máy tính để bàn pdf]
Tên=Trích xuất các trang dưới dạng pdf
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'pdf=$(pdftk "%u" bùng nổ); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
[Tif hành động trên máy tính để bàn]
Tên=Trích xuất các trang dưới dạng tif
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%.*}" -tiff); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
[Hành động trên máy tính để bàn jpeg]
Tên=Trích xuất các trang dưới dạng jpeg
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%.*}" -jpeg); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
- Tải và xử lý hình ảnh thu được trong Scan Tailor. Đặt các tệp hình ảnh thu được vào một thư mục riêng và thêm thư mục đó vào Dự án mới>Thư mục đầu vào trong Scan Tailor. (Tôi đã cài đặt chương trình đó từ PPA, như đã nói trong một nhận xét của @N0rbert dưới câu trả lời chính.) Một số trang chứa hình ảnh thực chứ không phải văn bản có thể trông đẹp hơn nếu cho mỗi người trong số họ được chọn "Thang độ xám và Màu" thay vì "Đen và trắng" mặc định (ở đây có nghĩa là văn bản). Chạy từng cái một trong các thủ tục được liệt kê. Kiểm tra các trang trước khi chạy trang cuối cùng ("Đầu ra").
- Tạo một bản pdf mới từ các hình ảnh kết quả. (Đầu tiên kiểm tra kết quả
tif
các tệp theo ý muốn của bạn.) Có nhiều cách để tạo một tệp pdf mới. Một lần nữa, các công cụ GUI mà tôi đã thử đã sớm bị hỏng hoặc cho kết quả kỳ lạ, vì vậy tôi muốn đặt kết quả tif
các tệp trong một thư mục riêng và chạy lệnh ở đó img2pdf *.tif -o out.pdf
- như đã nói đây. (Điều này có thể cần đặt tên/đánh số thích hợp cho các tệp. Thông tin thêm về điều đó đây.)
Kết quả là bản pdf "được điều chỉnh" sẽ nhỏ hơn bản ban đầu, nhưng tỷ lệ phần trăm giảm kích thước khác nhau tùy thuộc vào các yếu tố mà tôi bỏ qua (nhưng tôi tưởng tượng rằng các trang có trong bản pdf ban đầu sẽ được trích xuất â ở bước 1 â ở định dạng họ đã có; tôi nghĩ jpeg
và tif
nên được sử dụng thay vì png
; sử dụng pdfimages -list your.pdf
trong terminal để xem chi tiết về định dạng, dpi và các chi tiết khác trước khi xử lý bằng các lệnh bên trên và bên dưới).
Bản pdf cuối cùng có thể được giảm thêm bằng một lệnh như:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Thêm chi tiết về điều đó, đây.
Đây là một tập hợp các hành động menu dịch vụ Dolphin dựa trên liên kết trên:
[Mục nhập máy tính để bàn]
Loại=Dịch vụ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ứng dụng/pdf;
Actions=shrink;shrink0;shrink1;shrink2;
X-KDE-Submenu=Thao tác PDF: SHRINK
Biểu tượng=ứng dụng-pdf
[Thu nhỏ hành động trên màn hình]
Tên=Thu nhỏ kích thước pdf thành "máy in", 300dpi
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Shrink" --msgbox "Xong! $pdf";';
[Desktop Action thu nhỏ0]
Tên=Thu nhỏ pdf thành kích thước "chế bản trước", 300dpi
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Shrink" --msgbox "Xong! $pdf";';
[Desktop Action thu nhỏ1]
Tên = Thu nhỏ pdf thành "kích thước sách điện tử, 150dpi
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Shrink" --msgbox "Xong! $pdf";';
[Desktop Action shrink2]
Tên = Thu nhỏ pdf thành kích thước "màn hình", 72dpi
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Shrink" --msgbox "Xong! $pdf";';
Tôi đã nhận được một số trợ giúp từ cái này trả lời quá.
OCR (khả năng sao chép và tìm kiếm văn bản) bị mất trong quá trình trên, nếu có trong bản pdf ban đầu. Để có được OCR, hãy sử dụng
ocrmypdf input.pdf output.pdf
cho tiếng anh, như đã nói đây. Đối với các ngôn ngữ khác, hãy tìm chúng với apt-cache tìm kiếm tesseract-ocr
, và cài đặt chúng. cộng -l <LANG>
ở cuối lệnh cho các ngôn ngữ cụ thể; hơn đây; xem tên của họ cũng đây.
Đây là một hành động trong menu dịch vụ Cá heo dành cho OCR của Rumani với hai tùy chọn (một tùy chọn có tiến trình trong thiết bị đầu cuối và tên đầu ra cố định, tùy chọn còn lại có quy trình nền nhưng có tên đầu ra dựa trên đầu vào; tôi muốn có cả quy trình trong thiết bị đầu cuối và tên đầu ra dựa trên vào mà không biết làm, nếu ai làm được thì post lên đây!). Đối với tiếng Anh, thay thế "Rumani" và xóa -l ron
Biến đổi:
[Mục nhập máy tính để bàn]
Loại=Dịch vụ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ứng dụng/pdf;
Thao tác=ocr1;ocr2;
X-KDE-Submenu=Thao tác PDF: áp dụng OCR
Biểu tượng=ứng dụng-pdf
[Hành động trên máy tính để bàn ocr1]
Tên=Áp dụng OCR Rumani (xem tiến trình trong thiết bị đầu cuối; tên đầu ra: ocr_ro.pdf!)
Biểu tượng=ứng dụng-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron
[Hành động trên máy tính để bàn ocr2]
Tên=Áp dụng OCR Rumani (quy trình backgroud: KHÔNG có thiết bị đầu cuối! đầu vào>tên đầu ra)
Biểu tượng=ứng dụng-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'
(Trích xuất và xử lý hình ảnh, cũng như 'in dưới dạng pdf' sẽ loại bỏ OCR, nhưng giảm kích thước bằng ghostscript như trên không làm, do đó, "thu nhỏ" có thể được áp dụng trước hoặc sau OCR.)