Optyczne rozpoznawanie znaków (OCR) zamienia obrazy tekstu — skany, zdjęcia ze smartfonów, pliki PDF — na ciągi znaków czytelne dla maszyn, a coraz częściej na dane strukturalne. Nowoczesne OCR to potok, który czyści obraz, znajduje tekst, odczytuje go i eksportuje bogate metadane, dzięki czemu systemy podrzędne mogą wyszukiwać, indeksować lub wyodrębniać pola. Dwa szeroko stosowane standardy wyjściowe to hOCR, mikroformat HTML dla tekstu i układu, oraz ALTO XML, schemat zorientowany na biblioteki/archiwa; oba zachowują pozycje, kolejność czytania i inne wskazówki dotyczące układu i są obsługiwane przez popularne silniki, takie jak Tesseract.
Przetwarzanie wstępne. Jakość OCR zaczyna się od czyszczenia obrazu: konwersji do skali szarości, odszumiania, progowania (binaryzacji) i prostowania. Kanoniczne samouczki OpenCV obejmują globalne, adaptacyjne i Otsu progowanie — podstawowe elementy dla dokumentów o nierównomiernym oświetleniu lub bimodalnych histogramach. Gdy oświetlenie zmienia się na stronie (pomyśl o zdjęciach z telefonu), metody adaptacyjne często przewyższają pojedynczy globalny próg; Otsu automatycznie wybiera próg, analizując histogram. Równie ważna jest korekcja nachylenia: prostowanie oparte na transformacji Hougha (Transformacja Hougha) w połączeniu z binaryzacją Otsu to powszechny i skuteczny przepis w produkcyjnych potokach przetwarzania wstępnego.
Wykrywanie a rozpoznawanie. OCR jest zazwyczaj podzielone na wykrywanie tekstu (gdzie jest tekst?) i rozpoznawanie tekstu (co on mówi?). W scenach naturalnych i wielu skanach w pełni konwolucyjne detektory, takie jak EAST skutecznie przewidują czworokąty na poziomie słów lub linii bez ciężkich etapów propozycji i są zaimplementowane w popularnych zestawach narzędzi (np. samouczek wykrywania tekstu OpenCV). Na złożonych stronach (gazety, formularze, książki) ważna jest segmentacja linii/regionów i wnioskowanie o kolejności czytania:Kraken implementuje tradycyjną segmentację stref/linii i neuronową segmentację linii bazowej, z wyraźnym wsparciem dla różnych pism i kierunków (LTR/RTL/pionowo).
Modele rozpoznawania. Klasyczny koń roboczy open-source Tesseract (udostępniony jako open-source przez Google, z korzeniami w HP) ewoluował z klasyfikatora znaków w sekwencyjny rozpoznawacz oparty na LSTM i może emitować przeszukiwalne pliki PDF, wyjścia przyjazne dla hOCR/ALTOi więcej z CLI. Nowoczesne rozpoznawacze opierają się na modelowaniu sekwencji bez wstępnie posegmentowanych znaków. Connectionist Temporal Classification (CTC) pozostaje fundamentalne, ucząc się dopasowań między sekwencjami cech wejściowych a sekwencjami etykiet wyjściowych; jest szeroko stosowane w potokach rozpoznawania pisma ręcznego i tekstu w scenach.
W ostatnich latach Transformery przekształciły OCR. TrOCR używa kodera Vision Transformer oraz dekodera Text Transformer, trenowanego na dużych korpusach syntetycznych, a następnie dostrajanego na rzeczywistych danych, z dużą wydajnością w testach porównawczych tekstu drukowanego, pisanego odręcznie i w scenach (zobacz także dokumentację Hugging Face). Równolegle niektóre systemy omijają OCR na rzecz zrozumienia na dalszym etapie: Donut (Document Understanding Transformer) to koder-dekoder bez OCR, który bezpośrednio generuje ustrukturyzowane odpowiedzi (takie jak JSON klucz-wartość) z obrazów dokumentów (repo, karta modelu), unikając kumulacji błędów, gdy oddzielny krok OCR zasila system IE.
Jeśli chcesz gotowe do użycia rozwiązanie do odczytu tekstu w wielu pismach, EasyOCR oferuje proste API z ponad 80 modelami językowymi, zwracając ramki, tekst i pewność — przydatne do prototypów i pism nielacińskich. W przypadku dokumentów historycznych Kraken wyróżnia się segmentacją linii bazowej i świadomą pisma kolejnością czytania; do elastycznego trenowania na poziomie linii, Calamari opiera się na dziedzictwie Ocropy (Ocropy) z rozpoznawaczami (multi-)LSTM+CTC i CLI do dostrajania niestandardowych modeli.
Generalizacja zależy od danych. W przypadku pisma ręcznego Baza danych pisma ręcznego IAM dostarcza zróżnicowane pod względem pisarzy zdania w języku angielskim do trenowania i oceny; jest to długoletni zestaw referencyjny do rozpoznawania linii i słów. W przypadku tekstu w scenach COCO-Text nałożył obszerne adnotacje na MS-COCO, z etykietami dla tekstu drukowanego/pisanego odręcznie, czytelnego/nieczytelnego, pisma i pełnych transkrypcji (zobacz także oryginalną stronę projektu). Dziedzina ta w dużym stopniu opiera się również na syntetycznym wstępnym trenowaniu: SynthText in the Wild renderuje tekst na fotografiach z realistyczną geometrią i oświetleniem, dostarczając ogromne ilości danych do wstępnego trenowania detektorów i rozpoznawaczy (odniesienie kod i dane).
Konkursy pod parasolem Robust Reading ICDAR utrzymują ocenę w ryzach. Ostatnie zadania kładą nacisk na wykrywanie/odczyt od końca do końca i obejmują łączenie słów w frazy, z oficjalnym kodem raportującym precyzję/odwołanie/F-score, przecięcie nad sumą (IoU) i metryki odległości edycji na poziomie znaków — odzwierciedlając to, co praktycy powinni śledzić.
OCR rzadko kończy się na czystym tekście. Archiwa i biblioteki cyfrowe preferują ALTO XML , ponieważ koduje on fizyczny układ (bloki/linie/słowa ze współrzędnymi) obok treści i dobrze współgra z opakowaniem METS. hOCR mikroformat, w przeciwieństwie do tego, osadza ten sam pomysł w HTML/CSS, używając klas takich jak ocr_line i ocrx_word, co ułatwia wyświetlanie, edycję i transformację za pomocą narzędzi internetowych. Tesseract udostępnia oba — np. generowanie hOCR lub przeszukiwalnych plików PDF bezpośrednio z CLI (przewodnik po wyjściu PDF); opakowania Pythona, takie jak pytesseract dodają wygody. Istnieją konwertery do tłumaczenia między hOCR a ALTO, gdy repozytoria mają stałe standardy przyjmowania — zobacz tę wyselekcjonowaną listę narzędzi formatu plików OCR.
Najsilniejszym trendem jest konwergencja: wykrywanie, rozpoznawanie, modelowanie języka, a nawet dekodowanie specyficzne dla zadania łączą się w zunifikowane stosy Transformerów. Wstępne trenowanie na dużych korpusach syntetycznych pozostaje mnożnikiem siły. Modele bez OCR będą agresywnie konkurować wszędzie tam, gdzie celem są ustrukturyzowane wyniki, a nie dosłowne transkrypcje. Spodziewaj się również wdrożeń hybrydowych: lekkiego detektora plus rozpoznawacza w stylu TrOCR dla długiego tekstu i modelu w stylu Donut dla formularzy i paragonów.
Tesseract (GitHub) · Dokumentacja Tesseract · Specyfikacja hOCR · Tło ALTO · Detektor EAST · Wykrywanie tekstu OpenCV · TrOCR · Donut · COCO-Text · SynthText · Kraken · Calamari OCR · ICDAR RRC · pytesseract · Pismo ręczne IAM · Narzędzia formatu plików OCR · EasyOCR
Optical Character Recognition (OCR) to technologia używana do konwersji różnych rodzajów dokumentów, takich jak zeskanowane dokumenty papierowe, pliki PDF lub obrazy zrobione cyfrowym aparatem fotograficznym, na edytowalne i przeszukiwalne dane.
OCR działa poprzez skanowanie obrazu wejściowego lub dokumentu, segmentację obrazu na indywidualne znaki, a następnie porównanie każdego znaku z bazą danych kształtów znaków za pomocą rozpoznawania wzorców lub rozpoznawania cech.
OCR jest używany w różnych sektorach i aplikacjach, w tym do digitalizacji wydrukowanych dokumentów, włączania usług tekst-na-mowę, automatyzacji procesów wprowadzania danych i pomocy osobom niewidomym w lepszej interakcji z tekstem.
Pomimo wielkiego postępu w technologii OCR, nie jest ona nieomylna. Dokładność może różnić się w zależności od jakości oryginalnego dokumentu i specyfiki używanego oprogramowania OCR.
Chociaż OCR jest głównie przeznaczony dla tekstu drukowanego, niektóre zaawansowane systemy OCR są także w stanie rozpoznać jasne, konsekwentne pismo odręczne. Jednak zazwyczaj rozpoznawanie pisma odręcznego jest mniej dokładne ze względu na dużą różnorodność indywidualnych stylów pisania.
Tak, wiele systemów oprogramowania OCR potrafi rozpoznawać wiele języków. Ważne jest jednak, aby upewnić się, że konkretny język jest obsługiwany przez oprogramowanie, którego używasz.
OCR to skrót od Optical Character Recognition i służy do rozpoznawania tekstu drukowanego, natomiast ICR, czyli Intelligent Character Recognition, jest bardziej zaawansowany i służy do rozpoznawania tekstu pisanego odręcznie.
OCR najlepiej radzi sobie z czytelnymi, łatwymi do odczytania fontami i standardowymi rozmiarami tekstu. Chociaż może pracować z różnymi fontami i rozmiarami, dokładność zwykle maleje przy niecodziennych fontach lub bardzo małych rozmiarach tekstu.
OCR może mieć problemy z dokumentami o niskiej rozdzielczości, złożonymi czcionkami, źle wydrukowanymi tekstami, pismem odręcznym oraz dokumentami z tłem, które przeszkadza w tekście. Ponadto, mimo że może obsługiwać wiele języków, nie jest w stanie idealnie pokryć wszystkich języków.
Tak, OCR potrafi skanować kolorowy tekst i tło, choć zazwyczaj jest skuteczniejszy w przypadku wysokokontrastowych kombinacji kolorów, takich jak czarny tekst na białym tle. Dokładność może spadać, gdy kolor tekstu i tła nie tworzą wystarczającego kontrastu.
Format PBM (Portable Bitmap) jest jednym z najprostszych i najwcześniejszych formatów plików graficznych używanych do przechowywania obrazów monochromatycznych. Jest częścią pakietu Netpbm, który obejmuje również PGM (Portable GrayMap) dla obrazów w skali szarości i PPM (Portable PixMap) dla obrazów kolorowych. Format PBM został zaprojektowany tak, aby był niezwykle łatwy do odczytu i zapisu w programie oraz aby był jasny i jednoznaczny. Nie jest przeznaczony do samodzielnego użytku, lecz raczej jako najmniejszy wspólny mianownik do konwersji między różnymi formatami obrazów.
Format PBM obsługuje tylko obrazy czarno-białe (1-bitowe). Każdy piksel na obrazie jest reprezentowany przez pojedynczy bit – 0 dla bieli i 1 dla czerni. Prostota formatu sprawia, że jest łatwy do manipulowania za pomocą podstawowych narzędzi do edycji tekstu lub języków programowania bez potrzeby korzystania ze specjalistycznych bibliotek przetwarzania obrazu. Jednak ta prostota oznacza również, że pliki PBM mogą być większe niż bardziej zaawansowane formaty, takie jak JPEG lub PNG, które wykorzystują algorytmy kompresji w celu zmniejszenia rozmiaru pliku.
Istnieją dwie odmiany formatu PBM: format ASCII (zwykły), znany jako P1, oraz format binarny (surowy), znany jako P4. Format ASCII jest czytelny dla człowieka i można go utworzyć lub edytować za pomocą prostego edytora tekstu. Format binarny nie jest czytelny dla człowieka, ale jest bardziej oszczędny pod względem miejsca i szybszy do odczytu i zapisu dla programów. Pomimo różnic w przechowywaniu, oba formaty reprezentują ten sam typ danych obrazu i można je konwertować między sobą bez utraty informacji.
Struktura pliku PBM w formacie ASCII rozpoczyna się od dwubajtowego magicznego numeru, który identyfikuje typ pliku. Dla formatu PBM ASCII jest to „P1”. Po magicznym numerze znajduje się spacja (odstępy, znaki TAB, CR, LF), a następnie specyfikacja szerokości, która jest liczbą kolumn na obrazie, po której następuje więcej spacji, a następnie specyfikacja wysokości, która jest liczbą wierszy na obrazie. Po specyfikacji wysokości znajduje się więcej spacji, a następnie rozpoczynają się dane pikseli.
Dane pikseli w pliku ASCII PBM składają się z serii „0” i „1”, przy czym każde „0” reprezentuje biały piksel, a każde „1” reprezentuje czarny piksel. Piksele są ułożone w wierszach, przy czym każdy wiersz pikseli znajduje się w nowym wierszu. Spacje są dozwolone w dowolnym miejscu w danych pikseli, z wyjątkiem sekwencji dwuznakowej (nie są dozwolone między dwoma znakami sekwencji). Koniec pliku jest osiągany po odczytaniu szerokość*wysokość bitów.
Natomiast binarny format PBM zaczyna się od magicznego numeru „P4” zamiast „P1”. Po magicznym numerze format pliku jest taki sam jak w wersji ASCII, aż do momentu rozpoczęcia danych pikseli. Binarne dane pikseli są pakowane w bajty, przy czym najbardziej znaczący bit (MSB) każdego bajtu reprezentuje najbardziej wysunięty na lewo piksel, a każdy wiersz pikseli jest wypełniany w razie potrzeby, aby wype łnić ostatni bajt. Bity wypełnienia nie są istotne i ich wartości są ignorowane.
Format binarny jest bardziej oszczędny pod względem miejsca, ponieważ wykorzystuje pełny bajt do reprezentowania ośmiu pikseli, w przeciwieństwie do formatu ASCII, który wykorzystuje co najmniej osiem bajtów (jeden znak na piksel plus spacja). Jednak format binarny nie jest czytelny dla człowieka i wymaga programu, który rozumie format PBM, aby wyświetlić lub edytować obraz.
Tworzenie pliku PBM programowo jest stosunkowo proste. W języku programowania takim jak C można otworzyć plik w trybie zapisu, wyprowadzić odpowiedni magiczny numer, zapisać szerokość i wysokość jako liczby ASCII oddzielone spacją, a następnie wyprowadzić dane pikseli. W przypadku ASCII PBM dane pikseli można zapisać jako serię „0” i „1” z odpowiednimi podziałami wierszy. W przypadku binarnego PBM dane pikseli muszą być spakowane w bajty i zapisane do pliku w trybie binarnym.
Odczytywanie pliku PBM jest również proste. Program odczytuje magiczny numer, aby określić format, pomija spacje, odczytuje szerokość i wysokość, pomija więcej spacji, a następnie odczytuje dane pikseli. W przypadku ASCII PBM program może odczytywać znaki jeden po drugim i interpretować je jako wartości pikseli. W przypadku binarnego PBM program musi odczytywać bajty i rozpakowywać je na poszczególne bity, aby uzyskać wartości pikseli.
Format PBM nie obsługuje żadnej formy kompresji ani kodowania, co oznacza, że rozmiar pliku jest wprost proporcjonalny do liczby pikseli na obrazie. Może to skutkować bardzo dużymi plikami w przypadku obrazów o wysokiej rozdzielczości. Jednak prostota formatu sprawia, że jest idealny do nauki przetwarzania obrazu, do użytku w sytuacjach, gdy wierność obrazu jest ważniejsza niż rozmiar pliku, lub do użytku jako format pośredni w procesach konwersji obrazu.
Jedną z zalet formatu PBM jest jego prostota i łatwość manipulowania nim. Na przykład, aby odwrócić obraz PBM (zamienić wszystkie czarne piksele na białe i odwrotnie), można po prostu zastąpić wszystkie „0” na „1” i wszystkie „1” na „0” w danych pikseli. Można to zrobić za pomocą prostego skryptu lub programu do przetwarzania tekstu. Podobnie inne podstawowe operacje na obrazach, takie jak obracanie lub odbijanie lustrzane, można zaimplementować za pomocą prostych algorytmów.
Pomimo swojej prostoty format PBM nie jest szeroko stosowany do ogólnego przechowywania lub wymiany obrazów. Wynika to przede wszystkim z braku kompresji, co czyni go nieefektywnym do przechowywania dużych obrazów lub do użytku w Internecie, gdzie przepustowość może być problemem. Nowocześniejsze formaty, takie jak JPEG, PNG i GIF, oferują różne formy kompresji i są lepiej przystosowane do tych celów. Jednak format PBM jest nadal używany w niektórych kontekstach, szczególnie w przypadku prostych grafik w rozwoju oprogramowania oraz jako narzędzie dydaktyczne do nauki koncepcji przetwarzania obrazu.
Pakiet Netpbm, który obejmuje format PBM, zapewnia kolekcję narzędzi do manipulowania plikami PBM, PGM i PPM. Narzędzia te umożliwiają konwersję między formatami Netpbm a innymi popularnymi formatami obrazów, a także podstawowe operacje przetwarzania obrazu, takie jak skalowanie, przycinanie i manipulowanie kolorami. Pakiet jest zaprojektowany tak, aby był łatwo rozszerzalny, z prostym interfejsem do dodawania nowych funkcji.
Podsumowując, format obrazu PBM jest prostym, bez zbędnych dodatków formatem pliku do przechowywania monochromatycznych obrazów bitmapowych. Jego prostota sprawia, że jest łatwy do zrozumienia i manipulowania, co może być korzystne w celach edukacyjnych lub w przypadku prostych zadań przetwarzania obrazu. Chociaż nie nadaje się do wszystkich zastosowań ze względu na brak kompresji i wynikające z tego duże rozmiary plików, pozostaje użytecznym formatem w określonych kontekstach, w których jego zalety są najbardziej korzystne. Format PBM, wraz z resztą pakietu Netpbm, nadal jest cennym narzędziem dla osób pracujących z podstawowym przetwarzaniem obrazu i konwersją formatów.
Ten konwerter działa w całości w Twojej przeglądarce. Po wybraniu pliku jest on wczytywany do pamięci i konwertowany do wybranego formatu. Następnie możesz pobrać przekonwertowany plik.
Konwersje rozpoczynają się natychmiast, a większość plików jest konwertowana w mniej niż sekundę. Większe pliki mogą zająć więcej czasu.
Twoje pliki nigdy nie są przesyłane na nasze serwery. Są one konwertowane w Twojej przeglądarce, a następnie pobierany jest przekonwertowany plik. Nigdy nie widzimy Twoich plików.
Obsługujemy konwersję między wszystkimi formatami obrazów, w tym JPEG, PNG, GIF, WebP, SVG, BMP, TIFF i innymi.
Ten konwerter jest całkowicie darmowy i zawsze będzie darmowy. Ponieważ działa w Twojej przeglądarce, nie musimy płacić za serwery, więc nie musimy pobierać od Ciebie opłat.
Tak! Możesz konwertować dowolną liczbę plików jednocześnie. Wystarczy wybrać wiele plików podczas ich dodawania.