Wprowadzenie do optycznego rozpoznawania znaków [OCR] dla początkujących

Opublikowany: 2021-02-08

OCR lub optyczne rozpoznawanie znaków (OCR) służy do wyodrębniania informacji z obrazów rachunków i paragonów lub wszystkiego, co zawiera napisaną treść. Aby opracować to rozwiązanie, OpenCV można wykorzystać do przetwarzania obrazów, które mogą być dalej przesyłane do silnika Tesseract OCR, który może wyodrębnić tekst z tych obrazów.

Jednak proces usuwania tekstu może być skuteczny tylko wtedy, gdy obraz jest wyraźny, a teksty są wystarczająco widoczne. W zastosowaniach detalicznych, do wyodrębniania tekstów z faktur, faktura może być zalana znakami wodnymi lub może pojawić się cień na rachunku, który utrudnia przechwytywanie informacji.

Wychwytywanie fragmentów informacji z dłuższych stron tekstów również może być żmudnym zadaniem. Aby uporać się z tymi problemami, rozsądne jest, aby w procesie ekstrakcji informacji znalazło się miejsce z modułu przetwarzania obrazu, które zajmuje się wspomnianymi trudnościami.

Składa się z kilku podprocesów, tj. lokalizacji tekstów, segmentacji znaków i rozpoznawania tych znaków. Chociaż niewiele systemów radzi sobie bez segmentacji. Takie metody są tworzone przy użyciu kilku procedur, takich jak zastosowanie metody najmniejszych kwadratów w celu zmniejszenia wskaźnika błędów i wsparcia maszyn wektorów w celu dopasowania znaków.

Mimo to, często do identyfikacji obecności postaci na obrazie, stosuje się Convolutional Neural Networks (CNN). Teksty można oglądać jako spójny ciąg znaków. Wykrywanie i identyfikacja tych znaków z większą dokładnością jest trudnością, którą można rozwiązać za pomocą specjalnego rodzaju sieci neuronowej, a mianowicie sieci neuronowych rekurencyjnych (RNN) i pamięci krótkotrwałej (LSTM).

Słowa są zbierane przez dopasowanie tekstów do obiektów blob. Te wiersze i regiony są ponadto sprawdzane pod kątem równoważnego tekstu. Linie tekstu są podzielone na słowa tylko według rodzaju odstępów między nimi. Sposób identyfikacji dzieli się na dwa etapy. Po pierwsze, każde słowo jest identyfikowane. Każde idealne lub poprawnie zidentyfikowane słowo jest dodatkowo przekazywane do adaptacyjnego klasyfikatora jako dane treningowe.

Obraz odbierany jako dane wejściowe jest sprawdzany i przetwarzany w częściach. Tekst jest podawany do modelu LSTM linijka po linijce. Tesseract, który jest mechanizmem optycznego rozpoznawania znaków, jest dostępny dla różnych systemów operacyjnych. Wykorzystuje kombinację architektury CNN i LSTM do precyzyjnej identyfikacji i wyprowadzania tekstów z danych obrazu. Jednak obrazy z szumem lub cieniami utrudniają dokładność wyszukiwania.

Aby zminimalizować szum lub poprawić jakość obrazu, wstępne przetwarzanie obrazu można przeprowadzić za pomocą biblioteki OpenCV. Takie etapy przetwarzania wstępnego mogą obejmować wykrywanie obszaru zainteresowania ROI lub obszaru zainteresowania, kadrowanie obrazu, usuwanie szumu (lub niechcianych obszarów), progowanie, rozszerzanie i erozję, wykrywanie konturów lub krawędzi. Po wykonaniu tych kroków silniki OCR mogą doskonale odczytać obraz i wydobyć z niego odpowiednie teksty.

Spis treści

Narzędzia użyte

1. Otwórz CV

OpenCV to biblioteka oryginalnie kompatybilna z językami C/C++ i python. Jest powszechnie używany do przetwarzania danych z próbkami obrazu. Mnóstwo predefiniowanych przydatnych funkcji jest obecnych w bibliotece, która implementuje niezbędne przekształcenia na próbkach obrazu. Wszystkie wyżej wymienione funkcje, takie jak dylatacja, erozja, cięcie na plasterki, wykrywanie krawędzi i wiele innych, można łatwo wykonać za pomocą tej biblioteki.

2. Silnik Tesseract OCR

Wydana przez Google biblioteka o otwartym kodzie źródłowym jest szeroko stosowana do rozpoznawania tekstu. Może być używany do wykrywania i identyfikacji tekstów w różnych językach. Przetwarzanie jest dość szybkie i niemal natychmiast daje tekstowe wyjście obrazu. Wiele aplikacji do skanowania korzysta z tej biblioteki i polega na jej technikach ekstrakcji.

Kroki zaangażowane w proces wyodrębniania tekstu

(1) Po pierwsze, możliwe techniki przetwarzania obrazu, takie jak wykrywanie konturów, usuwanie szumów oraz funkcje erozji i dylatacji, są stosowane do przychodzącej zaszumionej próbki obrazu.

(2) Po tym kroku usuwa się znaki wodne i cienie z rachunku.

(3) Ponadto rachunek jest podzielony na części.

(4) Posegmentowane części są przepuszczane przez silnik Tesseract OCR w celu uzyskania pełnego tekstu.

(5) Wreszcie, korzystając z Regex, otrzymujemy wszystkie istotne informacje, takie jak łączna kwota, data zakupu i wydatki na sztukę.

pozwólcie, że opowiem o konkretnym obrazie z tekstami – fakturami i rachunkami. Zwykle mają na nich znaki wodne, większość firmy wystawiającej rachunki. Jak wspomniano wcześniej, te znaki wodne są przeszkodą w wydajnej ekstrakcji tekstu. Często te znaki wodne zawierają tekst.

Można je uznać za szum, ponieważ silnik Tesseracta rozpoznaje teksty każdego rozmiaru w wierszu. Podobnie jak znaki wodne, cienie również ograniczają dokładność silnika w celu wydajnego wyodrębniania tekstu. Cienie są usuwane poprzez zwiększenie kontrastu i jasności obrazu.

W przypadku obrazów, które mają naklejki lub znaki wodne, przeprowadzany jest proces wieloetapowy. Proces obejmuje konwersję obrazu do skali szarości, zastosowanie transformacji morfologicznych, zastosowanie progu (może to być inwersja binarna lub transformacja otsu), wyodrębnienie ciemniejszych pikseli w ciemniejszym obszarze i na koniec wklejenie ciemniejszych pikseli w obszarze znaku wodnego. Wracając do procesu usuwania cieni.

Po pierwsze, do obrazu w skali szarości stosuje się dylatację. Powyżej, średni niebieski z odpowiednim jądrem tłumi tekst. Wynikiem tego kroku jest obraz zawierający fragmenty cieni i wszelkie inne obecne przebarwienia. Teraz obliczana jest prosta operacja różnicy między oryginalnym obrazem a uzyskanym obrazem. Wreszcie po zastosowaniu progowania otrzymujemy obraz bez cieni.

Rozpoznawanie i ekstrakcja tekstu

Model Convolutional Neural Network można zbudować i wytrenować na odciśniętym tekście znajdującym się na obrazach. Model może być dalej używany do wykrywania tekstu z innych podobnych obrazów z tą samą czcionką. Silnik Tesseract OCR służy do odzyskiwania tekstu z obrazów, które zostały przetworzone za pomocą algorytmów wizji komputerowej.

W przypadku optycznego rozpoznawania znaków musimy wykonać lokalizację tekstu, następnie segmentację znaków, a następnie rozpoznanie znaków. Wszystkie te kroki są wykonywane przez Tesseract OCR. Silnik Tesseract OCR okazuje się bardzo dokładny, gdy jest używany do tekstu drukowanego, a nie odręcznego.

Uzyskiwanie istotnych informacji

Mówiąc konkretnie o fakturach, z całego wyodrębnionego tekstu, ważne informacje, takie jak data zakupu, łączna kwota itp., można łatwo uzyskać za pomocą wielu wyrażeń regularnych. Całkowitą kwotę nadrukowaną na fakturze można wyodrębnić, stosując wyrażenia regularne, ponieważ zwykle pojawia się ona na końcu faktury. Wiele takich przydatnych informacji można przechowywać według ich dat, aby były łatwo dostępne.

Precyzja

Dokładność wyszukiwania tekstu można zdefiniować jako stosunek prawidłowej liczby informacji uzyskanych przez Tesseract OCR i znajdujących się już na fakturze do łącznej liczby słów faktycznie obecnych w obrazie tekstowym. Wyższa dokładność oznacza wyższą wydajność technik wstępnego przetwarzania i zdolność Tesseract OCR do wydobywania informacji.

Co następne?

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, sprawdź dyplom IIIT-B i upGrad's PG Diploma in Machine Learning & AI, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznego szkolenia, ponad 30 studiów przypadków i zadań, IIIT- Status absolwenta B, ponad 5 praktycznych, praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Ucz się kursu ML z najlepszych światowych uniwersytetów. Zdobywaj programy Masters, Executive PGP lub Advanced Certificate Programy, aby przyspieszyć swoją karierę.

Poprowadź rewolucję technologiczną napędzaną sztuczną inteligencją

Złóż wniosek o zaawansowany program certyfikacji w uczeniu maszynowym i NLP