OCR w systemach Linux [zamknięte]

14

Zawsze uważałem, że technologia OCR jest opóźniona w systemach open source. Oglądałem również projekt Ocropus od jego początków . Próbowałem tego, co słyszałem, jest najlepszym silnikiem OCR dostępnym dla Linuksa, Tesseract , i okazało się, że bardzo brakuje mu dokumentów biznesowych. Czy są jeszcze jakieś bardziej obiecujące implementacje OCR? Co z jeszcze bardziej obiecującym celem interpretacji pisma ręcznego? Co jest możliwe w systemach * nix w tej dziedzinie?

jjclarkson
źródło
1
Czy należy to przenieść na oprogramowanie?
Jeff Schaller
@Jeff prawdopodobnie nie, biorąc pod uwagę, że ma prawie siedem lat. Od tego czasu wiele się wydarzyło. Niektóre z nich w OCR ... ;-)
roaima,

Odpowiedzi:

4

Tesseract

Od 2018 roku najlepszym dostępnym oprogramowaniem OCR typu open source jest Tesseract 4 (beta) z nowym modelem OCR sieci neuronowej LSTM . Jego wydajność OCR jest znacznie lepsza niż w poprzednim modelu OCR stosowanym w wersji 3.

Przykład (utwórz plik PDF output.pdfz warstwą tekstową dla zeskanowanego dokumentu niemieckiego):

$ echo page-*.png > input.list
$ tesseract --oem 1 -l deu input.list output pdf

Wydrukuj rozpoznany tekst na standardowe wyjście:

$ tesseract --oem 1 -l deu page page-0001.png stdout

Wyświetl listę zainstalowanych języków:

$ tesseract --list-langs

Obsługa całkiem wielu języków / skryptów jest dostępna w postaci szkolonych zestawów danych do pobrania , np. Istnieje nawet zestaw danych dla Fraktur.

Dzięki nowemu modelowi LSTM Tesseract czerpie inspirację z projektu badawczego OCRopus .

Wersja 3 Tesseract radzi sobie stosunkowo źle nawet w przypadku obrazów wejściowych dobrej jakości, tzn. Często fałszywie wykrywa pojedyncze znaki w pikselach pyłu (poza dowolnym kontekstem tekstowym) i łatwo wprowadza błędy pojedynczych znaków w dobrze znanych słowach.

Klinowy

Wydajność Cuneiform OCR nie jest taka zła, ale nie jest aktywnie utrzymywana (ostatnia wersja w 2011 r., Wersja 1.1) i łatwo ulega awarii i ma kilka innych problemów:

Możesz wyłączyć algorytm układu w następujący sposób:

$ cuneiform --singlecolumn -l ger -f text -o foo.txt image-0001

( -lokreśla język dokumentu źródłowego)

ocrad

$ ocrad -F utf8 image-0001

Tekst jest drukowany domyślnie na standardowe wyjście.

W dokumencie biznesowym brakowało podkreślonego słowa, w przeciwieństwie do pisma klinowego / tesseract / gocr.

gocr

$ gocr image-0001

Tekst jest drukowany domyślnie na standardowe wyjście.

Sprzęt komputerowy

Sane ma bardzo dobre wsparcie dla wielu skanerów z automatycznym podawaniem dokumentów (ADF), np. Dla skanerów Avision i Fujitsu .

Do Sane dołączony jest scanimageprogram wiersza poleceń, którego można użyć do budowy potoków skanowania za pomocą skryptów (patrz np. Mój adf2pdf.pyskrypt).

maxschlepzig
źródło
Spróbowałem Cuneiform. Działa dobrze, jeśli chcesz rozpoznać zeskanowany obraz (nie zdjęcia). Użyłem Yagf jako GUI.
Siergiej
3

Znalazłem podobne pytanie na StackOverflow, a Asprise OCR SDK , jeden z powiązanych komercyjnych produktów, może pochwalić się wersją Linux.

Larry Smithmier
źródło
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli zmieni się połączona strona. - Z recenzji
Thomas
1
@Thomas link jest jedyną możliwą odpowiedzią, ponieważ link wskazuje konkretne narzędzie, zgodnie z żądaniem PO. Nie wszystkie odpowiedzi zawierające tylko linki są złe. Daje to nazwę konkretnego oprogramowania i link do jego strony internetowej. Nawet jeśli link się zepsuje, nadal powinieneś być w stanie znaleźć go na podstawie nazwy.
terdon
1

Istnieje kilka popularnych narzędzi wiersza polecenia OCR:

  • Tesseract ( ReadMe , FAQ ) (Python)

    Dostępne również dla: Tesseract .NET , Tesseract iOS

    Silnik OCR, który został opracowany w HP Labs w latach 1985-1995 ... a teraz w Google. Tesseract jest prawdopodobnie najdokładniejszym dostępnym silnikiem OCR dostępnym na rynku.

    Stosowanie:

    tesseract [inputFile] [outputFile] [-l optionalLanguageFile] [PathTohOCRConfigFile]
    

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

  • GOCR

    Rozpoznawanie znaków typu open source. Konwertuje zeskanowane obrazy tekstu z powrotem na pliki tekstowe. GOCR może być używany z różnymi interfejsami, co bardzo ułatwia przenoszenie do różnych systemów operacyjnych i architektur. Może otwierać wiele różnych formatów obrazu, a jego jakość poprawia się z dnia na dzień.

  • OCRopus ™ ( FAQ ) (napisane w Python, NumPy i SciPy)

    System OCR koncentrujący się na wykorzystaniu uczenia maszynowego na dużą skalę do rozwiązywania problemów w analizie dokumentów, obejmujący wtykową analizę układu, wtykowe rozpoznawanie znaków, statystyczne modelowanie języka naturalnego i możliwości wielojęzyczne.

    Silnik OCRopus opiera się na dwóch projektach badawczych: wysoko wydajnym narzędziu do rozpoznawania pisma ręcznego opracowanym w połowie lat 90. i wdrożonym przez biuro US Census oraz nowatorskich, wysokowydajnych metodach analizy układu.

    Program OCRopus jest sponsorowany przez Google i początkowo jest przeznaczony do wysokowydajnych, dużych nakładów na konwersję dokumentów. Oczekujemy, że będzie to również doskonały system OCR do wielu innych zastosowań.

  • Tessnet2 (Open source, OCR, Tesseract, .NET, DOTNET, C #, VB.NET, C ++ / CLI)

    Tesseract to silnik OCR typu open source w języku C ++. Tessnet2 to zestaw .NET, który udostępnia bardzo proste metody wykonywania OCR. Tessnet2 jest objęty licencją Apache 2 (jak tesseract), co oznacza, że ​​możesz go używać tak, jak chcesz, zawartego w produktach komercyjnych.

Inne już zasugerowane: ABBYY CLI OCR dla Linux , Asprise OCR .

Czytaj także:

Aby uzyskać bardziej kompletną listę, sprawdź: Lista oprogramowania do optycznego rozpoznawania znaków z Wikipedii.

kenorb
źródło
0

... OCR to coś więcej niż „tylko rozpoznawanie znaków”. Obsługa obrazów, przetwarzanie wstępne - analiza strony / układu w celu znalezienia tekstów, obrazów, tabel lub kodów kreskowych. Aby rozpoznać, musisz radzić sobie z różnymi czcionkami, rozmiarami i językami. Jest to ważne, ponieważ aby uzyskać dobre wyniki, musisz korzystać ze słowników i definicji języka. Wreszcie ludzie oczekują więcej opcji eksportu niż tekst (np. XML, RTF lub PDF z możliwością wyszukiwania). Istnieje kilka opcji komercyjnych dla zestawów SDK, ale nie są one tanie i bezpłatne.

Ostatnio znalazłem OCR CLI dla Linuksa od ABBYY . Jest darmowa próbna strona 100.

tshepang
źródło