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 obrazu J2C, znany również jako strumień kodu JPEG 2000, jest częścią pakietu standardów JPEG 2000. Sam JPEG 2000 jest standardem kompresji obrazu i systemem kodowania stworzonym przez komitet Joint Photographic Experts Group z zamiarem zastąpienia oryginalnego standardu JPEG. Standard JPEG 2000 został ustanowiony w celu zapewnienia nowego systemu kodowania obrazu o wysokiej elastyczności i lepszej wydajności niż JPEG. Został zaprojektowany w celu rozwiązania niektórych ograniczeń formatu JPEG, takich jak słaba wydajność przy niskich przepływnościach i brak skalowalności.
JPEG 2000 wykorzystuje transformację falkową w przeciwieństwie do transformacji kosinusowej dyskretnej (DCT) używanej w oryginalnym standardzie JPEG. Transformacja falkowa pozwala na wyższy stopień skalowalności i możliwość wykonywania kompresji bezstratnej, co oznacza, że oryginalny obraz można idealnie zrekonstruować z danych skompresowanych. Jest to znacząca zaleta w porównaniu ze stratną kompresją oryginalnego JPEG, która trwale traci część informacji o obrazie podczas procesu kompresji.
Format pliku J2C odnosi się konkretnie do strumienia kodu JPEG 2000. Ten strumień kodu to rzeczywiste zakodowane dane obrazu, które można osadzić w różnych formatach kontenerów, takich jak JP2 (format pliku JPEG 2000 część 1), JPX (JPEG 2000 część 2, rozszerzony format pliku) i MJ2 (format pliku Motion JPEG 2000 dla wideo). Format J2C jest zasadniczo surowymi, zakodowanymi danymi obrazu bez żadnych dodatkowych metadanych lub struktury, które mogą być dostarczone przez format kontenera.
Jedną z kluczowych cech formatu J2C jest jego obsługa zarówno kompresji bezstratnej, jak i stratnej w tym samym pliku. Osiąga się to poprzez zastosowanie odwracalnej transformacji falkowej do kompresji bezstratnej i nieodwracalnej transformacji falkowej do kompresji stratnej. Wybór między kompresją bezstratną a stratną można dokonać na podstawie kafelka w obrazie, co pozwala na połączenie obszarów wysokiej i niskiej jakości w zależności od ważności treści.
Format J2C jest również wysoce skalowalny, obsługując funkcję znaną jako „dekodowanie progresywne”. Oznacza to, że najpierw można zdekodować i wyświetlić wersję obrazu o niskiej rozdzielczości, a następnie kolejne warstwy o wyższej rozdzielczości w miarę odbierania lub przetwarzania większej ilości danych obrazu. Jest to szczególnie przydatne w aplikacjach sieciowych, w których przepustowość może być ograniczona, ponieważ umożliwia szybki podgląd obrazu, podczas gdy pełny obraz o wysokiej rozdzielczości jest nadal pobierany.
Innym ważnym aspektem formatu J2C jest jego obsługa obszarów zainteresowania (ROI). Dzięki kodowaniu ROI niektóre części obrazu można zakodować w wyższej jakości niż reszta obrazu. Jest to przydatne, gdy niektóre obszary obrazu są ważniejsze i muszą być zachowane z większą wiernością, takie jak twarze na portrecie lub tekst w dokumencie.
Format J2C zawiera również zaawansowane funkcje odporności na błędy, które sprawiają, że jest bardziej odporny na utrat ę danych podczas transmisji. Osiąga się to poprzez zastosowanie kodów korekcji błędów i ustrukturyzowanie strumienia kodu w sposób umożliwiający odzyskanie utraconych pakietów. Dzięki temu J2C jest dobrym wyborem do przesyłania obrazów przez niezawodne sieci lub przechowywania obrazów w sposób minimalizujący wpływ potencjalnego uszkodzenia danych.
Obsługa przestrzeni kolorów w J2C jest również bardziej zaawansowana niż w oryginalnym JPEG. Format obsługuje szeroką gamę przestrzeni kolorów, w tym skala szarości, RGB, YCbCr i inne. Pozwala również na używanie różnych przestrzeni kolorów w różnych kafelkach tego samego obrazu, zapewniając dodatkową elastyczność w sposobie kodowania i reprezentowania obrazów.
Efektywność kompresji formatu J2C jest kolejną jego zaletą. Dzięki zastosowaniu transformacji falkowej i zaawansowanych technik kodowania entropii, takich jak kodowanie arytmetyczne, J2C może osiągnąć wyższe współczynniki kompresji niż oryginalny JPEG, szczególnie przy niższych przepływnościach. Dzięki temu jest to atrakcyjna opcja dla aplikacji, w których przestrzeń dyskowa lub przepustowość są na wagę złota, takich jak urządzenia mobilne lub aplikacje internetowe.
Pomimo wielu zalet, format J2C nie zyskał tak szerokiego zastosowania w porównaniu z oryginalnym formatem JPEG. Wynika to częściowo z większej złożoności standardu JPEG 2000, który wymaga więcej zasobów obliczeniowych do kodowania i dekodowania obrazów. Ponadto oryginalny format JPEG jest głęboko zakorzeniony w wielu systemach i ma ogromny ekosystem wsparcia oprogramowania i sprzętu, co utrudnia zdobycie przyczółka nowemu standardowi.
Jednak w niektórych specjalistycznych dziedzinach format J2C stał się preferowanym wyborem ze względu na swoje specyficzne cechy. Na przykład w obrazowaniu medycznym możliwość wykonywania kompresji bezstratnej oraz obsługa obrazów o wysokim zakresie dynamiki i wysokiej głębi bitowej sprawiają, że J2C jest idealnym formatem. Podobnie w cyfrowym kinie i archiwizacji wideo wysoka jakość formatu przy wysokich współczynnikach kompresji oraz jego funkcje skalowalności są wysoko cenione.
Proces kodowania obrazu J2C obejmuje kilka kroków. Najpierw obraz jest dzielony na kafelki, które można przetwarzać niezależnie. To kafelkowanie umożliwia przetwarzanie równoległe i może poprawić wydajność procesów kodowania i dekodowania. Następnie każdy kafelek jest przekształcany za pomocą odwracalnej lub nieodwracalnej transformacji falkowej, w zależności od tego, czy pożądana jest kompresja bezstratna czy stratna.
Po transformacji falkowej współczynniki są kwantyzowane, co polega na zmniejszeniu precyzji współczynników falkowych. W kompresji bezstratnej ten krok jest pomijany, ponieważ kwantyzacja wprowadziłaby błędy. Skwantyzowane współczynniki są następnie kodowane entropią za pomocą kodowania arytmetycznego, co zmniejsza rozmiar danych, wykorzystując właściwości statystyczne zawartości obrazu.
Ostatnim krokiem w procesie kodowania jest złożenie strumienia kodu. Zakodowane entropią dane dla każdego kafelka są łączone z informacjami nagłówka opisującymi obraz i sposób jego kodowania. Obejmuje to informacje o rozmiarze obrazu, liczbie kafelków, użytej transformacji falkowej, parametrach kwantyzacji i wszelkich innych istotnych danych. Powstały strumień kodu można następnie zapisać w pliku J2C lub osadzić w formacie kontenera.
Dekodowanie obrazu J2C polega zasadniczo na odwróceniu procesu kodowania. Strumień kodu jest analizowany w celu wyodrębnienia informacji nagłówka i danych zakodowanych entropią dla każdego kafelka. Następnie dane zakodowane entropią są dekodowane w celu odzyskania skwantyzowanych współczynników falkowych. Jeśli obraz został skompresowany za pomocą kompresji stratnej, współczynniki są następnie dekwantyzowane, aby przybliżyć ich oryginalne wartości. Odwrotna transformacja falkowa jest stosowana do rekonstrukcji obrazu ze współczynników falkowych, a kafelki są zszywane razem, aby utworzyć ostateczny obraz.
Podsumowując, format obrazu J2C jest potężnym i elastycznym systemem kodowania obrazu, który oferuje kilka zalet w porównaniu z oryginalnym formatem JPEG, w tym lepszą wydajność kompresji, skalowalność i możliwość wykonywania kompresji bezstratnej. Chociaż nie osiągnął takiego samego poziomu wszechobecności jak JPEG, jest dobrze przystosowany do aplikacji wymagających obrazów wysokiej jakości lub mających specyficzne wymagania techniczne. W miarę postępu technologii i rosnącego zapotrzebowania na bardziej zaawansowane systemy kodowania obrazu, format J2C może zyskać na popularności w różnych dziedzinach.
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.