Ca soluție directă pe PDF (fără extragere manuală a imaginii):
Folosind ocrmypdf
pentru a restabili OCR (după cum este menționat la sfârșitul documentului complementar parte a acestui răspuns) Am observat că ocrmypdf -h
arată o opțiune care suna exact ca ceea ce este întrebat:
--remove-background Încercați să eliminați fundalul din paginile gri sau color, setându-l pe alb
PDF-ul inițial avea deja OCR, ceea ce dă o eroare dacă nu se folosește una dintre următoarele opțiuni:
-f, --force-ocr Rasterizează orice text sau obiecte vectoriale de pe fiecare pagină, aplică OCR și salvează rezultatul raster (aceasta rescrie PDF-ul)
sau
-s, --skip-text Omite OCR pe orice pagină care conține deja text, dar include pagina în rezultatul final; util pentru PDF-urile care conțin o combinație de imagini, pagini de text și/sau pagini OCR anterior
Aplicarea fiecăruia separat la unul dintre fișierele mele mari cu sute de pagini care aveau deja OCR a blocat procesul.
Cea mai bună soluție mi se pare mai intai tipăriți în pdf fișierul inițial (care elimină OCR), apoi faceți
ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v
Pentru engleză, the -l
opțiunea nu este necesară. -v
este pentru detalii detaliate în terminal.
PDF-ul rezultat este mai mare decât intrarea (din cauza --elimină-fondul
opțiune): reduceți dimensiunea așa cum se spune mai jos.
Chiar și pictograma ei ilustrează faptul că este destinat exact pentru ceea ce se cere aici:

Iată cum să utilizați Scan Tailor cu fișiere PDF:
- Extrageți toate paginile pdf ca fișiere imagine - deoarece acest instrument nu procesează pdf direct și are nevoie de imagini. Master PDF Editor poate face acest lucru, dar pe aparatul meu se blochează după extragerea a aproximativ 80 de imagini. Dar poate fi folosit în continuare prin setarea unui nou lot/gamă de pagini care urmează să fie extrase. (Modul PDF s-a prăbușit înainte de orice procesare). Ceea ce prefer după câteva încercări este o metodă CLI fiabilă, deși mai lentă, cu o comandă de genul:
pdftoppm MY_PDF.pdf NUME -tiff
- cum s-a spus Aici. â Alte variabile pot fi folosite în loc de tiff
(care dă tif
fișiere), de exemplu png
sau jpeg
. Vedeți aici un set de acțiuni din meniul serviciului Dolphin pentru diferitele opțiuni de extracție:
[Intrare pe desktop]
Tip=Serviciu
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=pdf;tif;jpeg;
X-KDE-Submeniu=Acţiune PDF: EXTRAGERĂ TOATE paginile
Pictogramă=aplicație-pdf
[Desktop Action pdf]
Nume=Extrage pagini ca pdf
Pictogramă=aplicație-pdf
Exec=bash -c 'pdf=$(pdftk "%u" burst); kdialog --title "Extrage pagini" --msgbox "Extras! $pdf";';
[Desktop Action tif]
Nume=Extrage pagini ca tif
Pictogramă=aplicație-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "Extrage pagini" --msgbox "Extras! $pdf";';
[Desktop Action jpeg]
Name=Extrage pagini ca jpeg
Pictogramă=aplicație-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "Extrage pagini" --msgbox "Extras! $pdf";';
- Încărcați și procesați imaginile rezultate în Scan Tailor. Puneți fișierele de imagine rezultate într-un folder separat și adăugați acel folder sub Proiect nou>Director de intrare în Scan Tailor. (Am instalat acel program de la PPA, așa cum a spus într-un comentariu al lui @N0rbert sub răspunsul principal.) Unele pagini care conțin imagini reale și nu text ar putea arăta mai bine dacă pentru fiecare dintre ei este selectat „Scale de gri și culoare” în loc de „Alb-negru” implicit (însemnat aici pentru text). Rulați una câte una procedurile enumerate. Verificați paginile înainte de a rula ultima ("Ieșire").

- Creați un nou pdf din imaginile rezultate. (Verificați mai întâi rezultatul
tif
fișierele sunt așa cum doriți.) Există multe modalități de a crea un nou pdf. Din nou, instrumentele GUI pe care le-am încercat foarte curând s-au prăbușit sau au dat rezultate ciudate, așa că prefer să pun rezultatul tif
fișiere într-un folder separat și acolo rulați comanda img2pdf *.tif -o out.pdf
- cum s-a spus Aici. (Acest lucru poate necesita denumirea/numerotarea corectă a fișierelor. Mai multe despre asta Aici.)
PDF-ul „personalizat” rezultat va fi mai mic decât cel inițial, dar procentul de reducere a dimensiunii variază în funcție de factori pe care îi ignor (dar îmi imaginez că paginile conținute în pdf-ul inițial ar trebui extrase â la pasul 1 â în formatul pe care îl au deja, cred jpeg
și tif
ar trebui folosit în loc de png
; utilizare pdfimages -list your.pdf
în terminal pentru a vedea detalii despre format, dpi și alte detalii înainte de procesare cu comenzile de mai sus și de mai jos).
PDF-ul final poate fi redus și mai mult cu o comandă ca:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Mai multe detalii despre asta, Aici.
Iată un set de acțiuni din meniul serviciului Dolphin bazat pe linkul de mai sus:
[Intrare pe desktop]
Tip=Serviciu
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=shrink;shrink0;shrink1;shrink2;
X-KDE-Submeniu=Acțiune PDF: SHRINK
Pictogramă=aplicație-pdf
[Desktop Action shrink]
Nume=Reduceți pdf la dimensiunea „imprimantei”, 300 dpi
Pictogramă=aplicație-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 "Terminat! $pdf";';
[Desktop Action shrink0]
Nume=Reduceți pdf la dimensiunea „prepress”, 300 dpi
Pictogramă=aplicație-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 "Terminat! $pdf";';
[Desktop Action shrink1]
Nume=Reduceți pdf la „dimensiunea cărții electronice, 150 dpi
Pictogramă=aplicație-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 "Terminat! $pdf";';
[Desktop Action shrink2]
Nume=Reduceți pdf la dimensiunea „ecran”, 72 dpi
Pictogramă=aplicație-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 "Terminat! $pdf";';
Am primit ceva ajutor de la acest raspunde si tu.
OCR (capacitate de căutare și copiere a textului) este pierdut în timpul procedurii de mai sus, dacă este prezent în pdf-ul inițial. Pentru a obține OCR, utilizați
ocrmypdf input.pdf output.pdf
pentru engleză, după cum s-a spus Aici. Pentru alte limbi, caută-le cu căutare apt-cache tesseract-ocr
și instalați-le. Adăuga -l <LANG>
la sfârșitul comenzii pentru anumite limbi; Mai mult Aici; vezi si numele lor Aici.
Iată o acțiune din meniul serviciului Dolphin pentru OCR românesc cu două opțiuni (una cu progres în terminal și nume de ieșire fix, cealaltă cu proces de fundal, dar cu nume de ieșire bazat pe intrare; aș dori să se bazeze atât procesul în terminal, cât și numele de ieșire. la intrare, dar nu știu cum; dacă cineva o poate face, vă rugăm să postați aici!). Pentru engleză, înlocuiți „română” și eliminați -l ron
variabil:
[Intrare pe desktop]
Tip=Serviciu
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Acțiuni=ocr1;ocr2;
X-KDE-Submeniu=Acțiune PDF: aplică OCR
Pictogramă=aplicație-pdf
[Desktop Action ocr1]
Nume=Aplică OCR română (vezi progresul în terminal; numele de ieșire: ocr_ro.pdf!)
Pictogramă=aplicație-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron
[Desktop Action ocr2]
Nume=Aplică OCR română (proces de fundal: FĂRĂ terminal! intrare>nume ieșire)
Pictogramă=aplicație-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'
(Extragerea și procesarea imaginilor, precum și „imprimarea ca pdf” elimină OCR, dar reducând dimensiunea cu ghostscript ca mai sus nu, astfel încât „strângerea” poate fi aplicată înainte sau după OCR.)