Udostępnij istniejący plik PDF do wyszukiwania (OCR) za pomocą wiersza polecenia / skryptu

21

Szukam narzędzia skryptowego offline, które umożliwia przeszukiwanie istniejącego pliku PDF, uruchamiając na nim OCR, zastępując oryginalny plik, którego nie można przeszukiwać, wersją z możliwością przeszukiwania, i może działać bez nadzoru.

Np. Www.pdfscannerapp.com - robi dokładnie to, czego potrzebuję, ale jest to tylko GUI - bez skryptów.

Wiem, że Evernote umożliwia wyszukiwanie plików PDF, ale można je wyszukiwać tylko w Evernote.

Nie szukam idealnego OCR, nawet umiarkowanie akceptowalny OCR jest w porządku, ale wolałbym raczej małe narzędzie niż obszerny pakiet oprogramowania.

(Zdaję sobie sprawę z podobnego, ale innego pytania na temat usługi AD: Szukam oprogramowania do skanowania lub konwertowania na pliki PDF z możliwością wyszukiwania i znakowania - nie muszę jednak podpisywać ani wypełniać plików PDF, a moim wymaganiem jest, aby rozwiązanie można było skryptować)

EDYTOWAĆ:

1) Kilka narzędzi pozwala na ekstrakcję tekstu strukturalnego, jednak w celu wyodrębnienia tekst musi tam być; Mam na myśli głównie pliki PDF, które są owinięte bitmapami, podobnie jak zwykłe pliki PDF generowane przez skanery.

2) Niekoniecznie szukam darmowego rozwiązania i chętnie zapłacę za dobre narzędzie, które robi to, czego potrzebuję, ale nie szukam dużych aplikacji z milionem funkcji, które zawierają funkcję OCR, ale których koszt nie uzasadnia zakupu ich tylko dla funkcji OCR.

3) Jak wspomniano powyżej, nie szukam idealnego OCR, tylko umiarkowanie akceptowalnego OCR. Niestety z mojego doświadczenia wynika, że ​​tesseract jest naprawdę poniżej tego progu. Definiuję „umiarkowanie akceptowalny” OCR, który może, powiedzmy, OCR rachunek za media, dzięki czemu przynajmniej numer konta (numer klienta) zostanie poprawnie rozpoznany.

EDYCJA: „skryptowalny” lub „automatyczny”, to znaczy może być uruchamiany automatycznie i uruchamiany bez nadzoru bez udziału człowieka.

magma
źródło
2
... nie wiem, jak trudno byłoby to zrobić, ale Tesseract OCR często wymieniany code.google.com/p/tesseract-ocr i OCR w Unix.SE .
hhh
1
Jest to podobne pytanie tutaj , czy odpowiedź dopasować swoje wymagania?
nohillside
1
Wspominasz o OCR. Czy Twoje wymagania obejmują obsługę obrazów w formacie PDF lub zeskanowanych plików PDF? W przypadku plików, które zawierają tekst w postaci prostego postscriptum, konwerter plików PDF na tekst, taki jak „PDF2Text Pilot”, może działać dla Ciebie.
Tim B
@patrix Szukałem mniejszego narzędzia, niekoniecznie za darmo, ale w innym przedziale cenowym. Mimo to jest to możliwe rozwiązanie, dziękuję.
magma
@TimothyButler niestety mam do czynienia ze skanowanymi plikami PDF (obrazkami). Ale miła wskazówka, dziękuję.
magma

Odpowiedzi:

5

Nie jest dla mnie do końca jasne, jakie są twoje wymagania, aby móc „skryptować” to z „wiersza poleceń”.

Jeśli mówisz o automatyzacji, jest to możliwe przy dowolnej liczbie narzędzi.

ABBYY FineReader Express + Keyboard Maestro + Hazel

Używam ABBYY FineReader Express + Keyboard Maestro + Hazel w następujący sposób:

  1. Hazel monitoruje dany folder pod kątem wszelkich nowych plików PDF

  2. znaleziony plik PDF jest otwierany w „ABBYY FineReader Express”

  3. Keyboard Maestro automatyzuje następnie proces przekształcania pliku PDF w plik PDF z możliwością wyszukiwania (OCR) i zapisuje plik w innym katalogu.

Teraz, jeśli nie posiadasz już Hazel i Keyboard Maestro, twoje początkowe koszty będą rosły dość szybko (chociaż zależę od obu tak bardzo, uważam je za okazję).

PDFPen + AppleScript + Akcje folderów

Możesz zrobić coś podobnego z PDFPen (lub PDFPenPro) i akcjami folderów oraz AppleScript. Zobacz przykład na https://gist.github.com/prenagha/1355037 .

Marco Arment przeprowadził ankietę aplikacji OCR dla komputerów Mac i stwierdził, że PDFPen ma świetne wyniki i jest łatwy do zautomatyzowania.

Wyszukiwarka Google dla „PDFpen OCR Applecript” odkryje szereg alternatyw.

TJ Luoma
źródło
dobra odpowiedź TJ. Hazel jest niesamowita, jestem jej właścicielem i bardzo lubię z niej korzystać. Obecnie nie posiadam abbyy / keyboard maestro, ale Hazel + PDFPen to niesamowite połączenie. Ogólnie rzecz biorąc, chociaż wszystkie odpowiedzi tutaj są na ogół bardzo dobre i służą nieco innym odbiorcom, myślę, że Hazel + PDFPen dobrze pasuje do pierwotnego problemu. Przyjęty.
magma
+1 w ABBYYFineReader Express, z łatwością najlepszy obecnie OCR i przeszedłem już prawie tuzin dla własnego projektu
TechZen
12

To, czego chcesz, to Tesseract OCR. Jest to OCR typu open source obsługiwany przez Google i obsługujący różne platformy. Ma także natywny interfejs wiersza poleceń. To jest dokładnie to, czego szukasz i dostępne z projektu portów Mac, a także homebrew .

Strona główna projektu: https://github.com/tesseract-ocr

Jak zainstalować w systemie OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Przykład użycia: tesseract -l eng input.pdf output

Daniel Kocevski
źródło
Niezły projekt. W moich testach rozpoznanie było słabe, ale jestem pewien, że zależy to od mojej niezdolności do dostrojenia go. Szukałem bardziej leniwego rozwiązania, ale może to być dobry wybór, szczególnie jeśli chcesz mieć większą kontrolę i poświęcić temu czas.
magma,
tesseract nie jest zbyt dobry w porównaniu z bardziej aktualnymi zastrzeżonymi aplikacjami. W szczególności ma problemy z kodowaniem i matematyką, często wyrzucając wiele greckich znaków.
TechZen,
Czy wersja OS X umożliwia wprowadzanie plików PDF? Wersja systemu Windows nie.
Doug
8

Oświadczenie: NIE ROZWIĄZANIE OCR (ale ta odpowiedź jest nadal przydatna do wyodrębnienia tekstu z pdf)

Istnieje projekt Apache Software Foundation o nazwie Apache Tika :

Zestaw narzędzi wykrywa i wyodrębnia metadane i ustrukturyzowaną treść tekstową z różnych dokumentów przy użyciu istniejących bibliotek analizatora składni

Obsługują ekstrakcję tekstu PDF za pomocą PDFBox :

umożliwia tworzenie nowych dokumentów PDF, manipulowanie istniejącymi dokumentami oraz możliwość wydobywania treści z dokumentów. Apache PDFBox zawiera także kilka narzędzi wiersza poleceń

Ostatnio dodali także obsługę OCR (przez Tesserac)

W przypadku rozwiązania tekstowego PDFBox bardzo łatwo wyodrębnia tekst z pliku PDF:

Ma także kilka innych ciekawych opcji, które można zobaczyć w dokumentach ExtractText .

brutuscat
źródło
Zdecydowanie fajna opcja do wyodrębniania tekstu, ale nie widzę możliwości OCR.
magma
1
@magma OCR oznacza „optyczne rozpoznawanie znaków”, zdecydowanie istnieje „zdolność OCR”. Teraz musisz wyjaśnić: czy masz problem z wyodrębnieniem tekstu z obrazu o niskiej rozdzielczości, takiego jak wygenerowany za pomocą kamery VGA, słabego skanera lub odległego obrazu? Wtedy twój problem jest inny i wymaga fizycznego rozważenia takich rzeczy, jak super-rozdzielczość. Zadaj bardziej szczegółowe i krótsze pytania, aby uzyskać odpowiedź. Sugeruję, aby uprościć to pytanie do jednej funkcji, którą chcesz. Jeśli chcesz czegoś więcej, zadaj nowe pytanie.
hhh,
3
@ hhh, jedną rzeczą jest wyodrębnienie tekstu z pliku binarnego (takiego jak PDF), aby był on użyteczny i czytelny, przez parsowanie formatu binarnego. nie ma w tym nic optycznego. tekst już tam jest, te narzędzia po prostu go wyodrębniają, aby można było spokojnie powiedzieć, że tak powiem. optyczne rozpoznawanie znaków różni się tym, że próbuje rozpoznać wzory pikseli na mapie bitowej i odpowiednio je wyczuć, aby mógł wytworzyć odpowiedni fragment tekstu.
magma
To nie odpowiada na pierwotne pytanie. AFAICT, aplikacja pdfbox nie obsługuje OCR.
Feuermurmel
5

Polecam DEVONThink Pro Urzędu . Jest to doskonała aplikacja i ma bardzo dobrą obsługę AppleScript. Niestety tylko wersja „Pro Office” ma funkcję OCR - więc musisz wydać 100 GBP (150 USD).

Byłoby przesadą, jeśli używasz go tylko do skryptu OCR - ale jest to bardzo dobra aplikacja.

[edytuj] - ah, po prostu ponownie przeczytaj swój post - to zdecydowanie byłoby przesada!

Jeśli chcesz tylko OCR z powłoki, możesz spróbować porozmawiać z ABBY, którego silnik DEVON udziela licencji:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr

Diggory
źródło
Chociaż DEVONThink Pro Office w OS X to przesada, to jest interesujące. Jeśli programiści zaprojektowali go w systemie OS X i iOS, może jednak działać (upraszczając interfejs użytkownika) - czy wiesz coś takiego? Fajny pomysł - czy więc wersja Pro automatycznie dodaje warstwę OCR do wszelkiego rodzaju rzeczy, takich jak zrzuty ekranu i pliki PDF? A użytkownik może jakoś „skrypty” to?
hhh
2
Tak - aplikacja ma dobry słownik AppleScript, który między innymi pozwala konwertować obrazy przechowywane w aplikacji na pliki PDF z możliwością wyszukiwania.
Diggory,
Załóżmy, że robię zdjęcia za pomocą iPhone'a lub zrzuty ekranu z OS X i umieszczam je w folderze ProjectA, czy DEVONThink automatycznie dodaje do nich warstwę OCR, nawet bez określenia języka? Przypuśćmy, że umieścisz je w DropBox, a następnie uruchomisz DEVONThink w OSX, aby automatycznie sprawdzać folder, czy mógłbyś z nim pracować na OS X i iOS? Jest to fascynująca koncepcja, jeśli jest dobrze wykonana ... +1
hhh
W pewnym sensie brzmi to jak EverNote, gdzie EverNote dodaje OCR, ale nie pozwala na jego eksportowanie w ten sposób. Czy można eksportować swoje projekty z tego oprogramowania za pomocą OCR? Jeśli nie, niektóre bardzo proste biblioteki OCR, a następnie niektóre biblioteki analizy językowej mogą działać najlepiej. Być może drugim jest ABBY, jeszcze nie wiem.
hhh
2
Może rozpoznać w kilku językach: i.stack.imgur.com/buDLI.png
Diggory
5

Możesz sprawić, że istniejący plik PDF będzie można przeszukiwać, konwertując go do pliku tekstowego. Potrzebujesz do tego przynajmniej Imagemagick , Ghostscript (do konwersji PDF) i narzędzia OCR Tesseract .

Przykład z wiersza poleceń:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Można to rozszerzyć na Twoje potrzeby.

Aby zainstalować wymagane narzędzia, w OSX możesz zainstalować je za pomocą Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

W systemie Linux użyj apt-getlub yumzamiast brew.

Aby uzyskać więcej narzędzi OCR, zaznacz: OCR w systemach Linux

Związane z:

kenorb
źródło
4

Rozwiązaniem, 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, to OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF

użytkownik127022
źródło
Wygląda to na fajne rozwiązanie, chociaż znalazłem backend OCR, Tesseract, raczej rozczarowujący (z pewnością z powodu moich własnych ograniczeń w prawidłowej konfiguracji).
magma
Uwielbiam OCRmyPDF, zapoznaj się z moją odpowiedzią poniżej, która wyjaśnia, jak zainstalować i zautomatyzować go metodą „przeciągnij i upuść” szybko i bezboleśnie za pomocą dokera.
thadk
1

Stackoverflow ma podobne pytania w ramach analizy plików PDF, obejmujące takie rzeczy, jak PDFBox i TIKA Apache, z których korzysta PDFBox. Poniższy kod ruby ​​wypakowuje zapis z pliku PDF. Musisz mieć wystarczająco dobrą rozdzielczość, aby tego typu kody działały poprawnie. Zdobądź wystarczająco dobry skaner o dużej rozdzielczości, a następnie sprawdź, czy niektóre oprogramowanie działa.

Przykłady

  1. https://github.com/yob/pdf-reader/tree/master/examples

Wątki SO

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Edytować]

Nie jestem pewien, czy zrozumiałem teraz twój problem. Chcesz dodać warstwę OCR do różnego rodzaju materiałów, takich jak losowe zdjęcia, zrzuty ekranu, pliki PDF bez warstwy OCR i tak dalej? Nie znam rozwiązania, ale jestem pewien, że ktoś wie, więc zadał konkretne pytanie, jak to zrobić za pomocą Automatora i oprogramowania OCR:

Skrypt automatyzatora z oprogramowaniem OCR do automatycznego dodawania OCR do materiału?

hhh
źródło
Ponownie: nie chcę analizować ani wyodrębniać tekstu, który już tam jest. Chcę rozpoznać tekst (OCR) w pliku PDF, który jest zasadniczo obrazem, bitmapą; nie zawierają oryginalnie żadnego tekstu.
magma
@magma, proszę zobaczyć moją aktualizację. Chcesz zautomatyzować dodawanie warstwy OCR, aby móc przeszukiwać różne rodzaje dokumentów, nawet bez „tekstu do przeszukiwania”? Jeśli możesz to zrobić, możesz przeszukać wszystkie dokumenty w Finderze - rozumiesz? Jestem zaskoczony, jeśli Apple nie zrobi tego w nadchodzących aktualizacjach ...
hhh
jak stwierdzono w moim pytaniu, tak.
magma
1

W przypadku tego rodzaju samodzielnej aplikacji jestem wielkim fanem Hazel.

Ułatwia to wykonywanie skryptów bez konieczności uczenia się bardziej zorientowanego na wiersze poleceń narzędzia, takiego jak Perl lub Python, w połączeniu z wybranym silnikiem OCR (moim obecnie jest PDF Pen Pro), nie powinieneś mieć problemów z przetwarzaniem plików przy minimalnym zamieszanie.

Oba są płatnym oprogramowaniem, ale użyteczność obu daleko sięga poza ten jeden przypadek. W mojej sytuacji, przy pracy związanej z digitalizacją moich zeskanowanych dokumentów (i bieżącej pracy), ich cena znacznie przewyższa czas, który spędziłbym na programowaniu tego gdzie indziej, a teraz, gdy jestem właścicielem obu narzędzi, mogę wykonywać wiele innych zadań z im.

bmike
źródło
0

PDFScannerApp ma nieoficjalną obsługę skryptów. Skontaktuj się z autorem w sprawie akcji Automator.

ndf
źródło
0

Korzystam z Adobe Acrobat do OCR wsadowo. Mój skaner dwustronny może skanować OCR po skanowaniu, ale moim zdaniem technologia OCR w programie Acrobat jest dokładniejsza. Po prostu wskazuję folder, w którym nie ma OCR, a następnie program acrobat ponownie zapisuje plik PDF jako plik PDF z możliwością wyszukiwania, zawierający teraz warstwę tekstową. Gdybym chciał OCR za pomocą wiersza poleceń, nie znam sposobu, ale mogę zautomatyzować interfejs GUI za pomocą Autohotkey. Nie jest tak niezawodny ani szybki jak wiersz poleceń, ale wykonuje zadanie po skonfigurowaniu akcji przepływu pracy w celu zminimalizowania interakcji GUI.

W przypadku komputerów Mac skrypt Apple wykonuje to samo, co Autohotkey na komputerze PC, chociaż nie próbowałem jeszcze na komputerze Mac.

Automatyczny klawisz skrótu jest wyposażony w rejestrator, więc większość pisania skryptów jest dla ciebie obiadem z mniejszą ilością edycji do udoskonalenia i być może zapętleniem, jeśli chcesz.

Eksperymentowałem z OCRingiem obrazów, ale nie w pełni zautomatyzowałem ten proces za pomocą programu Acrobat. Wiersz poleceń jest idealny, ale nie znalazłem wysokiej jakości silnika OCR, który przewyższa program acrobat, więc na razie pozostaję przy nim.

Słońce
źródło
0

Natknąłem się na to niedawno: http://ocrkit.com/faq.html

Musisz jednak zapłacić po 14 dniach

Charlton
źródło
1
Witamy, aby zapytać inaczej! Staramy się znaleźć najlepsze odpowiedzi, które dostarczą informacji, dlaczego są najlepsze. Wyjaśnij, dlaczego Twoim zdaniem zalecane oprogramowanie jest lepsze od innych. Zasadniczo odpowiedzi zawierające tylko linki są podatne na usunięcie, więc zawsze chcesz, aby Twoja odpowiedź zawierała wszystkie istotne informacje. Zobacz Jak odpowiedzieć na pytanie, jak udzielić wysokiej jakości odpowiedzi.
fsb,
0

Mam wysokiej jakości konwersję Drag & Drop działającą za pomocą Dockera.

Jeśli ty:

  1. zainstaluj Docker na komputerze Mac i
  2. następnie utwórz nową aplikację Automator
  3. z tymi treściami w akcji „Uruchom skrypt powłoki”. Wybierz hasło wejściowe:"as arguments"

/bin/bash tekst skryptu:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Powinieneś wtedy przeciągać i upuszczać na nim pliki PDF, a otrzymasz plik PDF o podobnej nazwie z „-ocr” dołączonym do nazwy pliku.

Wyobrażam sobie, że można go łatwo zmodyfikować, aby zwrócić plik do Automatora i również gdzieś skopiować. Więcej informacji o dobrym pakiecie dokera OCRmyPDF. i główne narzędzie (wspomniane również w innej odpowiedzi).

Możesz to przetestować w samym Automatorze za pomocą akcji „Pobierz określone elementy Findera” jako danych wejściowych.

Przy pierwszym uruchomieniu zajmuje więcej czasu, ponieważ będzie musiał pobrać obrazy Dockera dla OCRmyPDF (niewidocznie). W Terminalu możesz alternatywnie biegać, docker pull jbarlow83/ocrmypdfaby przyspieszyć pierwszy bieg. Typowy przebieg zajmuje około 10 sekund na stronę o wysokiej DPI, ale automatycznie powoduje wyświetlenie tekstu na mowę, nawet jeśli istnieją tabele lub diagramy. Przed OCR, ja przyciąć używając Sejda tak nonsensowne marginesów słowa z innych stron są usuwane.

--force-ocrArgumentem opowiada narzędzie do ignorowania i zastąpić wszystkie wcześniejsze próby OCR, które w moim przypadku są zazwyczaj tylko częściowy i bezużyteczne.

thadk
źródło
0

OCRKit obsługuje zarówno AppleScript, jak i CLI. Z ich strony pomocy :

AppleScript

Możesz także napisać skrypt do OCRKit, aby zintegrować go z określonym przepływem pracy. Na przykład przetwarzaj przychodzące pliki za pośrednictwem folderu współdzielonego, z urządzenia kopiującego MFP itp. I po prostu powiedz OCRKit, aby otworzył, a zatem przetwarzanie odbywa się za pomocą AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Wiersz poleceń

Od wersji OCRKit 2.5 obsługiwane jest bezpośrednie skryptowanie wiersza poleceń. To znacznie upraszcza użycie OCRKit w przetwarzaniu wsadowym, pozwala ustawić więcej opcji, a także jest bardziej niezawodne i wieloplatformowe niż AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Od wersji 16.9 OCRKit obsługiwane są dodatkowe opcje wiersza poleceń:

-r, --recursive directory

Skanuj katalog rekurencyjnie w poszukiwaniu nowych plików. Pomija pliki z OCRKit z warstwą tekstową lub grafiką wektorową.

--pattern "regex"

Wzorzec używany do dopasowania nazw plików podczas skanowania rekurencyjnego. Domyślnie %.pdf$zalecenie dla TIFF to%.tiff?$

--log file

Zapisz informacje o pliku dziennika i statystyki podczas skanowania rekurencyjnego do pliku.

--password secret

Użyj tajnego hasła, aby odszyfrować pliki PDF podczas przetwarzania wsadowego.

--test-run [ fast ]

Uruchom testowe przetwarzanie wsadowe tylko w trybie testowym, aby przetestować pliki PDF lub uzyskać liczbę stron w celu oszacowania całkowitego czasu przetwarzania. „szybki” sprawdzi tylko pierwszą stronę każdego pliku, zamiast przechodzić przez wszystkie strony w celu analizy obrazu i wektora.

--tag name

Użyj rozszerzonej nazwy atrybutu, aby oznaczyć stan przetwarzania plików podczas przetwarzania wsadowego. macos:OCRKit (%s)użyje zamiast tego natywnych tagów macOS Finder lub po prostu macos:OCRKitnie będzie zawierał atrybutu state. Kolejność atrybutu państwowej są: started, analyzed, processed, a także może być encrypted.

xilopaint
źródło