Przejdź do treści stopki
NARZęDZIA OCR

Easyocr vs Tesseract (Porównanie funkcji OCR)

Optyczne rozpoznawanie znaków (OCR) to technologia, która pomaga przetwarzać dokumenty, takie jak zeskanowane dokumenty papierowe, pliki PDF lub zdjęcia o wysokiej rozdzielczości zrobione aparatem, na dane, które można wydrukować i przeszukiwać. Rozpoznawanie cech wyodrębnionego tekstu oraz operacje morfologiczne pozwalają technologii OCR zautomatyzować wprowadzanie danych, co przyspiesza proces przetwarzania informacji i zwiększa jego dokładność.

OCR skanuje dokument, rozpoznaje znaki, takie jak litery, cyfry lub symbole, i przekształca je do formatu nadającego się do odczytu maszynowego. Zastosowania obejmują digitalizację książek, przetwarzanie formularzy, automatyzację obiegu dokumentów oraz poprawę dostępności dla osób niewidomych. Wraz z rozwojem głębokiego uczenia się i sztucznej inteligencji silniki OCR stały się bardzo dokładne w rozpoznawaniu złożonych formatów, dokumentów wielojęzycznych, a nawet obrazów o niskiej jakości.

Popularne narzędzia i biblioteki OCR, takie jak EasyOCR, Tesseract OCR, Keras-OCR i IronOCR, są powszechnie wykorzystywane do integracji tej funkcjonalności z nowoczesnymi aplikacjami.

EasyOCR

EasyOCR to biblioteka open source napisana w języku Python, której celem jest uproszczenie i usprawnienie procesu wyodrębniania tekstu z obrazów. Wykorzystuje techniki głębokiego uczenia się i obsługuje ponad 80 języków, w tym łacinę, chiński, arabski i wiele innych. Jego API jest na tyle proste, że każdy może łatwo zintegrować funkcję przewidywania OCR ze swoimi aplikacjami bez większej konfiguracji. Dzięki EasyOCR Tesseract można przeprowadzić prostą digitalizację dokumentów, rozpoznawanie tablic rejestracyjnych, a nawet wyodrębnić tekst ze zdjęcia.

EasyOCR jest dobrze znane ze swoich solidnych możliwości rozpoznawania tekstu, zwłaszcza w przypadku tekstu wielowierszowego i obrazów o niskiej jakości. Dlatego nadaje się do rzeczywistych zastosowań, opierając się tylko na kilku zależnościach. Jest to lekkie oprogramowanie, które działa wydajnie bez konieczności korzystania z procesora graficznego na nowoczesnym sprzęcie, co czyni je dość atrakcyjnym dla programistów potrzebujących elastycznych funkcji OCR.

Funkcje EasyOCR

Istnieje kilka funkcji, które sprawiają, że EasyOCR jest wszechstronnym i potężnym narzędziem OCR:

  • Rozpoznaje ponad 80 języków: EasyOCR potrafi odczytywać chiński, japoński, koreański, arabski, języki oparte na alfabecie łacińskim i wiele innych, w tym złożone słowa i języki.

  • Zaawansowane rozpoznawanie oparte na głębokim uczeniu: Obsługuje zaawansowane techniki głębokiego uczenia o wysokiej wydajności i precyzji, zwłaszcza w przypadku zakłóconych lub zniekształconych układów tekstu i obrazów.

  • Proste API: To łatwe w użyciu API pozwala użytkownikom szybko uzyskać funkcje OCR w aplikacji bez konieczności dalszej konfiguracji.

  • Wykrywanie tekstu wielowierszowego: Rozpoznaje wiele wierszy tekstu, co jest przydatne w przypadku dokumentów, książek lub wielowierszowych znaków.

  • Lekkość: Działa dobrze na procesorze i może wykorzystywać procesor graficzny w celu poprawy wydajności, a jednocześnie pozostaje funkcjonalny na podstawowym sprzęcie.

  • Wstępne przetwarzanie obrazów: Dostępne są podstawowe narzędzia do wstępnego przetwarzania obrazów, służące do oczyszczania wyników OCR z obrazów zawierających zakłócenia lub o niskiej rozdzielczości.

  • Elastyczne wdrażanie: Działa na różnych platformach i jest stosunkowo łatwe do wbudowania w aplikacje w języku Python.

Instalacja

EasyOCR można zainstalować za pomocą pip, menedżera pakietów języka Python. Upewnij się, że wszystkie zależności zostały najpierw spełnione. Niezbędne zależności obejmują biblioteki PyTorch: torch i torchvision. Można je zainstalować razem z EasyOCR:

Zainstaluj EasyOCR: Otwórz terminal lub wiersz poleceń i wpisz polecenie:

pip install easyocr
pip install easyocr
SHELL

Zainstaluj PyTorch, jeśli nie jest zainstalowany (wymagańe przez EasyOCR): EasyOCR działa na PyTorch. Jeśli nie zostało to automatycznie zainstalowane w Twoim środowisku, postępuj zgodnie z oficjalnym przewodnikiem instalacji PyTorch.

Po zainstalowaniu będziesz gotowy do korzystania z EasyOCR do zadań związanych z ekstrakcją tekstu.

Obraz OCR przy użyciu EasyOCR

Poniżej znajduje się przykładowy kod w języku Python pokazujący, jak używać EasyOCR do OCR na obrazie:

import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
reader = easyocr.Reader(['en'])  # Specify the languages (e.g., 'en' for English)

# Load the image
image_path = 'sample_image.png'  # Path to the image
image = cv2.imread(image_path)

# Perform OCR on the image
result = reader.readtext(image_path)

# Print detected text and its bounding boxes
for (bbox, text, prob) in result:
    print(f"Detected Text: {text} (Confidence: {prob:.4f})")

# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
    # Unpack the bounding box
    top_left, top_right, bottom_right, bottom_left = bbox
    top_left = tuple(map(int, top_left))
    bottom_right = tuple(map(int, bottom_right))

    # Draw a rectangle around the text
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)

# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
reader = easyocr.Reader(['en'])  # Specify the languages (e.g., 'en' for English)

# Load the image
image_path = 'sample_image.png'  # Path to the image
image = cv2.imread(image_path)

# Perform OCR on the image
result = reader.readtext(image_path)

# Print detected text and its bounding boxes
for (bbox, text, prob) in result:
    print(f"Detected Text: {text} (Confidence: {prob:.4f})")

# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
    # Unpack the bounding box
    top_left, top_right, bottom_right, bottom_left = bbox
    top_left = tuple(map(int, top_left))
    bottom_right = tuple(map(int, bottom_right))

    # Draw a rectangle around the text
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)

# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
PYTHON

Poniższy obrazek przedstawia wynik wygenerowany na podstawie powyższego kodu.

EasyOCR vs Tesseract  (Porównanie funkcji OCR): Rysunek 3 – Wynik EasyOCR

Tesseract

Tesseract to jeden z najpopularniejszych silników optycznego rozpoznawania znaków typu open source, obsługujący wiele opcji hiperparametrów umożliwiających dostosowanie. Dostęp do niego można uzyskać z aplikacji Python za pomocą pytesseract. Rozwój Tesseract został zainicjowany przez firmę Hewlett-Packard, a następnie udoskonalony przez Google. Jest bardzo wszechstronny i potrafi wyodrębniać tekst z obrazów i plików PDF w ponad 100 językach. Owijka Python umożliwia płynną interakcję z Tesseractem za pośrednictwem pytesseract.

EasyOCR vs Tesseract  (Porównanie funkcji OCR): Rysunek 4 – Tesseract

Tesseract słynie ze swojej zdolności do wykrywania i wyodrębniania tekstu wydrukowanego maszynowo. Oferuje funkcje rozpoznawania wielu języków, obsługuje szkolenia dotyczące nowych czcionek i przeprowadza analizę układu tekstu. Tesseract jest szeroko stosowany do digitalizacji dokumentów, skanowania paragonów, automatyzacji wprowadzania danych oraz tworzenia plików PDF z możliwością wyszukiwania. W języku Python Tesseract stanowi potężne połączenie dla programistów pracujących nad zadaniami związanymi z OCR.

Funkcje OCR Tesseract

Do najważniejszych funkcji pytesseract należą:

  • Obsługa wielu języków: Tesseract rozpoznaje ponad 100 języków, a pytesseract zapewnia łatwą obsługę wielojęzycznego OCR w skryptach Pythona. Umożliwia również szkolenie w zakresie dodatkowych niestandardowych czcionek i języków, rozszerzając swoje możliwości.

  • Konwersja obrazu na tekst: Pytesseract wyodrębnia treść tekstową z różnych formatów obrazów, takich jak PNG, JPEG, BMP, GIF i TIFF, umożliwiając OCR w różnych źródłach.

  • Konwersja pliku PDF do formatu z możliwością wyszukiwania: Tesseract odczytuje tekst zawarty w pliku PDF i konwertuje go do formatu z możliwością wyszukiwania, umożliwiając użytkownikom indeksowanie treści zeskanowanych dokumentów.

  • Rozpoznawanie złożonego układu tekstu: potrafi odczytywać złożone układy, w tym dokumenty wielokolumnowe i tabele, dokładniej wyodrębniając tekst z niestandardowych formatów.

  • Konfiguracja niestandardowa: Użytkownicy mogą przekazywać niestandardowe parametry konfiguracyjne Tesseracta za pośrednictwem pytesseract w celu precyzyjnego dostrojenia wydajności OCR, wykorzystując odpowiednie tryby rozpoznawania lub atrybuty obrazu.

  • Proste API: Proste API w pytesseract ułatwia programistom dodawanie funkcji OCR do projektów w języku Python przy minimalnej ilości kodu potrzebnego do interakcji.

Biblioteka ta dobrze współpracuje z innymi bibliotekami, takimi jak OpenCV, PIL (Python Imaging Library) czy NumPy, w zakresie wstępnego przetwarzania obrazów w celu poprawy dokładności OCR.

Instalacja

Po zainstalowaniu Tesseract zainstaluj pakiet pytesseract za pomocą pip:

pip install pytesseract
pip install pytesseract
SHELL

EasyOCR vs Tesseract  (Porównanie funkcji OCR): Rysunek 5 - pytesseract

OCR obrazu przy użyciu pytesseract

Oto przykładowy kod w języku Python wykorzystujący bibliotekę pytesseract do rozpoznawania tekstu (OCR) na obrazie:

import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
PYTHON

Poniżej znajduje się wynik wygenerowany na podstawie powyższego kodu.

EasyOCR vs Tesseract  (Porównanie funkcji OCR): Rysunek 6 – Wynik Tesseract

IronOCR

IronOCR to potężna biblioteka do optycznego rozpoznawania znaków, która pozwala programistom .NET wykorzystywać IronOCR for .NET do wydajnego wyodrębniania tekstu z obrazów, plików PDF i innych formatów dokumentów. Zaawansowane algorytmy zapewniają wysoką dokładność nawet w przypadku złożonych układów graficznych lub środowisk wielojęzycznych, obsługując formaty JPEG, PNG, GIF i TIFF. Biblioteka oferuje konfigurowalne ustawienia, umożliwiające precyzyjne dostosowanie działania silnika OCR za pomocą parametrów takich jak rozdzielczość obrazu lub orientacja tekstu.

Funkcja wstępnego przetwarzania obrazów zapewnia lepszą jakość obrazów wejściowych, co przekłada się na wyższą dokładność rozpoznawania oraz generowanie dokumentów wyjściowych w formacie PDF z możliwością wyszukiwania, co ułatwia odzyskiwanie informacji. Dzięki płynnej integracji z aplikacjami internetowymi IronOCR jest doskonałym wyborem dla programistów poszukujących niezawodnych rozwiązań do ekstrakcji tekstu i digitalizacji dokumentów w różnych dziedzinach.

Funkcje IronOCR

  • Wysoka dokładność: Wykorzystuje zaawansowane algorytmy, aby zapewnić wysoki poziom dokładności rozpoznawania tekstu niezależnie od złożoności dokumentu lub użytej czcionki.

  • Obsługa wielu formatów: Obsługuje formaty obrazów, takie jak JPEG, PNG, GIF i TIFF, a także pliki PDF, co zapewnia wszechstronność w różnych aplikacjach.

  • Rozpoznawanie wielojęzyczne: Obsługuje wielojęzyczne OCR, zapewniając dokładne wyniki w różnych kontekstach językowych.

  • Zachowanie układu tekstu: Zachowuje oryginalny układ dokumentu, zapewniając, że wyodrębniony tekst zachowuje swoją sformatowaną strukturę.

  • Konfigurowalne OCR: Oferuje konfigurowalne parametry dotyczące rozdzielczości obrazu, orientacji tekstu i innych, umożliwiając programistom optymalizację wydajności OCR dla konkretnych obrazów.

  • Wstępne przetwarzanie obrazów: Obejmuje podstawowe narzędzia do poprawiania jakości obrazów, takie jak usuwanie szumów, regulacja kontrastu i zmiana rozmiaru, w celu poprawy dokładności OCR.

  • Konwersja do formatu PDF z możliwością wyszukiwania: Konwertuje zeskanowane obrazy i dokumenty bezpośrednio do plików PDF z możliwością wyszukiwania, co pozwala na efektywne zarządzanie danymi i ich wyszukiwanie.

  • Łatwa integracja: Ułatwia prostą integrację z aplikacjami .NET, umożliwiając użytkownikom łatwe dodanie funkcji OCR.

  • Przetwarzanie wsadowe: Obsługuje jednoczesne przetwarzanie wielu obrazów lub dokumentów, co jest przydatne przy obsłudze dużych ilości danych.

Instalacja

Aby zainstalować IronOCR, otwórz menedżera pakietów NuGet w Visual Studio, utwórz nowy projekt, wyszukaj "IronOCR", wybierz najnowszą wersję i kliknij "Zainstaluj".

EasyOCR vs Tesseract  (Porównanie funkcji OCR): Rysunek 7 – Instalacja pakietu językowego francuskiego

Przykładowy kod wykorzystujący IronOCR

Poniższy kod w języku C# pokazuje, jak używać IronOCR do przetwarzania OCR:

using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()

		' Add languages to the OCR engine
		Ocr.Language = OcrLanguage.English

		' Define the path to the input image
		Dim inputFile = "path\to\your\image.png"

		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			Dim result = Ocr.Read(input)

			' Display the extracted text
			Console.WriteLine("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Ocena porównawcza

Wysoka dokładność

W porównaniu z Tesseract lub EasyOCR, IronOCR wyróżnia się dokładnością w przypadku złożonych układów, zaszumionych obrazów i tekstów o niskiej rozdzielczości. Wbudowane narzędzia do wstępnego przetwarzania obrazów, takie jak redukcja szumów i regulacja kontrastu, przyczyniają się do osiągnięcia wysokiej dokładności w rzeczywistych zastosowaniach.

Zachowanie wielu formatów i układu

IronOCR doskonale radzi sobie z przetwarzaniem różnych formatów obrazów, plików PDF i układów wielokolumnowych, zachowując jednocześnie oryginalną strukturę i formatowanie dokumentu. Nadaje się doskonale do projektów, w których zachowanie układu graficznego ma kluczowe znaczenie.

Możliwość bezpośredniej konwersji obrazów i zeskanowanych dokumentów na pliki PDF z pełną funkcją wyszukiwania, bez konieczności korzystania z dodatkowych narzędzi lub bibliotek, stanowi przewagę nad Tesseract i EasyOCR.

IronOCR zapewnia zaawansowane przetwarzanie wstępne

Nawet obrazy niskiej jakości mogą osiągnąć wysoką dokładność OCR dzięki zaawansowanym funkcjom przetwarzania wstępnego IronOCR, które ograniczają potrzebę stosowania dodatkowych bibliotek, takich jak OpenCV, czyniąc z niego kompleksowe rozwiązanie do ekstrakcji tekstu.

Skalowalność i wydajność

Zoptymalizowany pod kątem szybkiego i oszczędnego OCR, IronOCR obsługuje skalowalność w przypadku zadań związanych z przetwarzaniem dużych dokumentów, co jest priorytetem dla aplikacji Enterprise.

Wsparcie i aktualizacje

Dzięki komercyjnemu wsparciu IronOCR korzysta z regularnych aktualizacji, poprawek błędów i dedykowanej pomocy, oferując długoterminową niezawodność i najnowsze osiągnięcia w dziedzinie OCR, w przeciwieństwie do opcji open source, takich jak Tesseract i EasyOCR.

Wnioski

Wśród najważniejszych bibliotek OCR IronOCR wyróżnia się najwyższą dokładnością, łatwością integracji, możliwościami przetwarzania wstępnego oraz tworzeniem plików PDF z funkcją wyszukiwania. Zręcznie radzi sobie ze złożonymi układami i obrazami o niskiej jakości, zachowując strukturę dokumentu i obsługując wiele języków od razu po uruchomieniu. Te cechy sprawiają, że jest to rozwiązanie preferowane w stosunku do rozwiązań open source, takich jak Tesseract i EasyOCR.

Dzięki płynnej integracji zarówno z platformą .NET, jak i językiem Python, IronOCR stanowi kompleksowy pakiet dla programistów poszukujących wysokiej jakości funkcji OCR w różnorodnych projektach. Biorąc pod uwagę godną pochwały wydajność, skalowalność i wsparcie komercyjne, IronOCR doskonale nadaje się do szeroko zakrojonych inicjatyw digitalizacji dokumentów na małą i dużą skalę, oferując niezawodne i wydajne rozpoznawanie tekstu.

Aby dowiedzieć się więcej o IronOCR i jego funkcjach, odwiedź stronę dokumentacji. Więcej informacji na temat produktów Iron Software można znaleźć na stronie poświęconej Suite bibliotek.

Kannaopat Udonpant
Inżynier oprogramowania
Zanim stał się inżynierem oprogramowania, Kannapat ukończył doktorat z zasobów środowiskowych na Uniwersytecie Hokkaido w Japonii. W czasie studiowania, Kannapat również został członkiem Laboratorium Robotyki Pojazdów, które jest częścią Wydziału Inżynierii Bioprodukcji. W 2022 roku wykorzystał swoje umiejętności w ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie