Dodawanie informacji OCR do pliku PDF

28

Mam dobrej jakości skan dokumentu; taki skan jest w formacie pdf.

Jak mogę dodać informacje ocr do pliku PDF, aby można go było wyszukiwać? Przez wyszukiwalne rozumiem, że celem jest to, że podczas przeglądania pliku pdf za pomocą evince, CTRL-F faktycznie pozwala mi przeszukiwać zawartość pdf.

fdierre
źródło
4
@Jakob, nie sądzę, że to dupek, pytamy o różne rzeczy. Drugie pytanie dotyczy wyodrębnienia tekstu z niektórych plików pdf (tj. Generowania odpowiednich plików txt), podczas gdy moje pytanie dotyczy modyfikacji pliku pdf w celu dodania informacji ocr i umożliwienia pracy funkcji wyszukiwania w czytniku pdf. Wyjaśnię pytanie.
fdierre
Jak i czego użyłeś do zeskanowania dokumentu?
Mitch
@Mitch Korzystałem z mojej biurowej drukarki / kopiarki / skanera Ricoh Aficio MP-C2500, która ma bardzo ładny podajnik dokumentów. :-)
fdierre
Oprogramowanie do skanowania i / lub OCR?
Mitch

Odpowiedzi:

21

pdfsandwich

Robi to, co chcesz i zapewnia pakiety Ubuntu deb. Wykorzystuje tesseract jak silnik OCR. Poniższa rozmowa dodaje warstwę tekstową do zeskanowanego pliku PDF:

pdfsandwich scanned.pdf

W następstwie robi to samo, ale z innego języka (kod ISO 639-2, pobierz tesseract-ocr-LANGCODEpakiet) i ustawienie układu:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Jeśli masz żadnego błędu prosimy pobrać Najnowsza wersja deb z Sourceforge .

Oświadczenie: Jestem programistą pdfsandwich i dlatego oczywiście jestem stronniczy.

Tobias Elze
źródło
6
To jest naprawdę świetne, dziękuję. Wydaje się jednak, że modyfikuje obrazy, wygląda na to, że przesuwa nad nimi maskę wyostrzającą lub coś. Czy istnieje sposób na pozostawienie zdjęć dokładnie tak, jak były wcześniej? W moim szczególnym przypadku filtrowi udało się nawet usunąć pasek z kilku ułamków w niektórych równaniach. Wszystko inne działa całkiem dobrze ...
naught101
Pakiet złej jakości: `Wyniki kontroli Lintiana dla /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: plik-kontrolny-ma-złe-uprawnienia md5sums 0664! = 0644 E: pdfsandwich: plik-kontrolny-zły-właściciel md5sums james / james! = root / root E: pdfsandwich: niepoprawny-właściciel-pliku-identyfikator-użytkownika-usid / 1000/1000 E: pdfsandwich: niewłaściwy-właściciel-pliku-identyfikator-użytkownika-usid / bin / 1000 / 1000 E: pdfsandwich: nieprawidłowy właściciel pliku-uid-or-gid usr / bin / pdfsandwich ...
AB
Pobierz ostatnią wersję deb z SF . Jeśli na końcu pojawi się błąd, może być związany z ghostscript (v0.1.4). Teraz używa v0.1.6 pdfunite.
Pablo A
1
@PabloBianchi Czy istnieje sposób ręcznej korekty tekstu OCRed przy użyciu pdfsandwitch? Robię to z niektórych szwedzkich dokumentów, i to działa dobrze, z wyjątkiem niektórych pisowni (prawdopodobnie z powodu czcionki oryginału), które byłyby łatwe do ustalenia, czy to plik tekstowy, ale w jaki sposób można zrobić to w wynikowym pliku PDF ?
zrajm
@ zrajm możesz użyć niektórych parametrów pdfsandwich dla lepszego rozpoznania na etapie OCR. Aby edytować ukryty tekst za obrazem PDF, możesz po prostu edytować warstwę pól tekstowych za pomocą LibreOffice Draw, Inkscape lub dowolnego narzędzia do edycji PDF. Jeśli znajdziesz lepszy sposób, opublikuj go tutaj. DaH jImej!
Pablo A
4

Znalazłem nie idealne rozwiązanie, ale bardzo skuteczne.

Korzystam z przeglądarki PDF X-Change Viewer za pośrednictwem Wine. Posiada funkcję OCR, która dodaje warstwę tekstową do istniejącego pliku pdf opartego na obrazie.

W ten sposób możesz wyszukiwać i kopiować tekst z tej niewidocznej warstwy.

wprowadź opis zdjęcia tutaj

Do zrobienia
źródło
2

W przypadku rozwiązania wiersza polecenia można użyć pdfocr .

W skrócie, zainstaluj oprogramowanie:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Następnie uruchom pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

To działało dla mnie na Ubuntu 12.04 LTS.

Robert Citek
źródło
6
Github tutaj: github.com/gkovacs/pdfocr . Ale ma to ten sam problem pdfsandwich, ponieważ modyfikuje / kompresuje pliki PDF zawierające obrazy highres, zasadniczo niszcząc niektóre oryginalne informacje o obrazie.
jmiserez
2

OCRmyPDF to rozwiązanie, które można łatwo wdrożyć i zapewnia wyjściowy plik PDF o tej samej jakości pliku wejściowego i rozsądnej wielkości:

https://github.com/jbarlow83/OCRmyPDF

użytkownik127022
źródło
Z twoim scenariuszem mam doskonałe wyniki. W przeciwieństwie pdfocr Géza Kovacs, nie wymaga żadnego dodatkowego (trudno skompilować w niektórych dystrybucjach Linuksa!) Bibliotek. Dziękuję Ci!
Maksym
0

To jest mój szybki i brudny rozwiązanie oparte na ImageMagick na convert, tesseract, paralleloraz pdftk(wszystkie dostępne na dystrybucjach opartych na Debianie). Jest w dużej mierze oparty na tym blogu .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf
stefanct
źródło
0

W przypadku całego katalogu z plikami ppm możesz użyć tego skryptu ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
PetaT
źródło