Artykuł
Poprawa dokładności OCR: napraw obraz przed rozpoznawaniem tekstu
OCR jest tak dobry, jak obraz, który mu podasz. Krzywy, niskokontrastowy, zaszumiony skan daje nieczytelny tekst niezależnie od jakości silnika. Oto co naprawdę robi różnicę, w kolejności działań, wszystko uruchamiane lokalnie w przeglądarce.
Dlaczego OCR ma problem z prawdziwymi skanami
Silnik OCR taki jak Tesseract był trenowany na czystym, poziomym, wysokokontrastowym tekście. Dzieli stronę na wiersze, wiersze na słowa, a słowa na kształty znaków, po czym dopasowuje każdy kształt do wytrenowanego modelu. Rzeczywiste skany naruszają te założenia: strona jest przechylona o kilka stopni, oświetlenie jest nierównomierne, rozdzielczość jest niska, a krawędź łoża skanera lub sąsiednia strona dodaje ciemny szum. Każdy z tych problemów sprawia, że krok segmentacji wierszy i znaków daje błędny wynik, a błędna segmentacja przekłada się na błędne znaki. Rozwiązaniem rzadko jest inny silnik: chodzi o przygotowanie obrazu tak, aby założenia silnika były spełnione. W praktyce preprocessing poprawia dokładność bardziej niż wybór silnika OCR.

Zacznij od rozdzielczości: celuj w 300 DPI
Tesseract działa najlepiej przy około 300 DPI dla zwykłego tekstu. Poniżej mniej więcej 200 DPI kreski każdego glifa zamazują się z sąsiednimi i dokładność gwałtownie spada. Jeśli kontrolujesz skan, ustaw skaner na 300 DPI przed wszystkim innym, bo to wybór o największym wpływie. Jeśli masz tylko obraz o niskiej rozdzielczości, powiększenie go nie tworzy szczegółów, których nigdy nie zarejestrowano, ale umiarkowane powiększenie może pomóc silnikowi rozdzielić dotykające się znaki, dając segmentacji więcej pikseli do pracy. Bardzo drobny druk korzysta z 400 do 600 DPI; powyżej tego tylko powiększasz plik bez żadnego zysku dokładności. Gdy źródłem jest PDF, najpierw zrasteryzuj każdą stronę do obrazu w docelowym DPI, a następnie uruchom OCR na tym obrazie.
Ustaw właściwą orientację
Jeśli strona jest obrócona o 90, 180 lub 270 stopni, silnik czyta bokiem lub do góry nogami i zwraca bełkot. Tesseract posiada przebieg wykrywania orientacji i skryptu (OSD), który może odgadnąć obrót, ale jest zawodny na rzadkim tekście, formularzach lub stronach zdominowanych przez obrazy. Samodzielne obrócenie strony do pionu usuwa element zgadywania. Ten krok jest bezstratny i natychmiastowy: obrót o wielokrotność 90 stopni tylko przenosi istniejące piksele na nowe pozycje, bez utraty jakości i ponownego próbkowania. Wykonaj to przed wyprostowaniem, ponieważ wyprostowanie zakłada, że tekst jest już mniej więcej poziomy.
Wyprostowanie: korygowanie małego przechylenia
Nawet przechylenie o 2 do 3 stopni, takie jakie powstaje przy lekko krzywym podaniu strony, szkodzi OCR: krok znajdowania poziomych wierszy dzieli jeden wiersz tekstu na dwa albo scala dwa wiersze w jeden. Wyprostowanie mierzy dominujący kąt wierszy tekstu (zwykle za pomocą analizy profilu projekcji lub transformacji Hough) i obraca stronę z powrotem do poziomu. W odróżnieniu od obrotu o 90 stopni, wyprostowanie to mały obrót o dowolny kąt, więc ponownie próbkuje piksele i dodaje niewielkie rozmycie. Ten kompromis jest prawie zawsze wart zachodu, ponieważ poziome wiersze segmentują się czysto, a zysk dokładności zdecydowanie przewyższa nieznaczne zmiękczenie. Wyprostuj po skorygowaniu orientacji i przed przycinaniem.

Przytnij do tekstu i usuń szum
Wszystko, co nie jest poszukiwanym tekstem, to szum, który silnik może błędnie odczytać: ciemna krawędź łoża skanera, fragment sąsiedniej strony, zszyte narożnik, palec lub dziurka od dziurkacza. Przycięcie do samego bloku tekstu usuwa te fałszywe cele, co zarówno poprawia dokładność, jak i przyspiesza rozpoznawanie, bo silnik ma mniej obszaru do analizy. W przypadku dokumentu wielokolumnowego przycięcie (lub uruchomienie OCR kolumna po kolumnie) zapobiega też czytaniu przez silnik prosto przez margines i przeplataniu dwóch kolumn w jeden nieczytelny wiersz. Przytnij po wyprostowaniu, aby zawartość była równo osadzona w kadrze.
Kontrast, skala szarości i jak naprawdę działa binaryzacja
OCR ostatecznie operuje na obrazie binarnym: każdy piksel jest klasyfikowany jako tusz lub papier. Tesseract robi to wewnętrznie metodą Otsu, która wybiera jeden globalny próg z histogramu obrazu. Działa to dobrze przy równomiernym oświetleniu i dobrym kontraście strony, a zawodzi gdy cień lub kolorowe tło sprawia, że jeden narożnik jest ciemniejszy niż oczekuje próg. Pewne korzyści daje konwersja do skali szarości, by przebarwienie koloru nie mylić progu, oraz wyrównanie oświetlenia tak, aby cała strona była po jednej jego stronie. Umiarkowane zwiększenie kontrastu pomaga blademu tekstowi. Zazwyczaj przynosi odwrotny efekt twarda ręczna binaryzacja: jeśli samodzielnie zprogujesz do czystej czerni i bieli z błędnym odcięciem, wymaże blady kreski, które własny przebieg silnika by zachował. Pozwól silnikowi binaryzować i dostarcz mu równy, szaroskalowy obraz na start. Sunasty oferuje skalę szarości dla PDF; do precyzyjnego dostrajania kontrastu lepszy jest edytor desktopowy, ale równomierne oświetlenie podczas skanowania ma większy wpływ niż jakikolwiek suwak.
Wybierz właściwy język i sprawdź wyniki
Tesseract wczytuje osobny plik danych treningowych dla każdego języka i skryptu. Uruchomienie angielskiego modelu na tekście francuskim lub greckim powoduje unikalne błędy, szczególnie na znakach akcentowanych lub niełacińskich, więc wybierz język odpowiadający dokumentowi. Na koniec traktuj wynik OCR jako wersję roboczą, nie ostateczną odpowiedź: silnik nie ma możliwości wiedzieć, że imię jest poprawnie napisane lub że 0 to nie O. Sprawdź liczby, nazwy własne i wszystko istotne prawnie lub finansowo. W przypadku tabel i układów wielokolumnowych spodziewaj się ręcznego poprawiania struktury, bo OCR zwraca strumień rozpoznanego tekstu, nie odtworzonego układu.
Narzędzia w tym artykule
- OCR · obraz/PDF do tekstuWyodrębnij tekst ze zeskanowanych obrazów lub PDF w całości w przeglądarce, działa offline, bez przesyłania.
- Prostuj pochylone stronyProstuj pochylone zeskanowane PDF lub obrazy w całości w przeglądarce, bez przesyłania.
- Obróć i odwróć obrazyObracaj obrazy o 90/180/270° lub odbijaj je poziomo i pionowo, bez przesyłania.
- Kadruj obrazKadruj obrazy z interaktywnym podglądem, przeciągnij i zmień rozmiar obszaru kadrowania. Bez przesyłania.
- PDF do skali szarościKonwertuj kolorowy PDF do skali szarości w całości w przeglądarce, bez przesyłania.
- Zmień rozmiar obrazówZmieniaj rozmiar i konwertuj obrazy (JPEG, PNG, WebP) bez ich przesyłania.
- PDF do obrazówKonwertuj każdą stronę PDF do PNG lub JPG bezpośrednio w przeglądarce.
Najczęściej zadawane pytania
Czy powiększenie rozmazanego skanu poprawia OCR?
Niewiele samo w sobie. Powiększenie nie może odzyskać szczegółów, których skan nigdy nie zarejestrował, więc rozmazany obraz 100 DPI pozostaje rozmazany. Umiarkowane powiększenie może pomóc silnikowi rozdzielić dotykające się znaki, dając segmentacji więcej pikseli, ale ponowne skanowanie przy 300 DPI jest znacznie skuteczniejsze niż jakiekolwiek powiększanie.
Czy powinienem sam najpierw przekonwertować obraz do czystej czerni i bieli?
Zazwyczaj nie. Tesseract binaryzuje wewnętrznie metodą Otsu, a ręczny twardy próg z błędnym odcięciem wymazuje blade kreski, które silnik by zachował. Zamiast tego przekonwertuj do skali szarości i wyrównaj oświetlenie, a następnie pozwól silnikowi samodzielnie wybrać próg.
Mój tekst jest bokiem. Czy OCR obróci go automatycznie?
Czasami. Tesseract posiada przebieg wykrywania orientacji, ale jest zawodny na formularzach, rzadkim tekście lub stronach z dużą ilością obrazów. Samodzielne obrócenie strony pionowo o 90, 180 lub 270 stopni jest bezstratne i usuwa element zgadywania, więc jest to bezpieczniejszy wybór.
Czy cokolwiek z tego wysyła mój dokument?
Nie. Obracanie, wyprostowywanie, przycinanie, konwersja do skali szarości i sam OCR działają w przeglądarce. OCR korzysta z kompilacji WebAssembly Tesseract, a wytrenowane dane językowe są pobierane raz i przechowywane w pamięci podręcznej. Twój plik nigdy nie opuszcza urządzenia.