OCR C# Open Source (Lista dla programistów)
OCR (Optical Character Recognition) to przełomowa technologia, która całkowicie zmienia sposób wykorzystania zeskanowanych dokumentów w dzisiejszym cyfrowym świecie. Umożliwia to komputerom rozpoznawanie i wyodrębnianie tekstu z różnych źródeł, w tym ze skanowanych dokumentów PDF, co pozwala nam skutecznie edytować dokumenty PDF i wchodzić z nimi w interakcję. Jednym z programów do optycznego rozpoznawania znaków (OCR) jest Adobe Acrobat, który pozwala szybko wyodrębniać tekst ze skanowanych dokumentów i konwertować je na edytowalne pliki PDF oraz pliki PDF z obrazami z możliwością wyszukiwania.
Programiści mogą uzyskać dostęp do solidnych narzędzi i interfejsów API, które wykorzystują najnowocześniejsze algorytmy i metody uczenia maszynowego, korzystając z bibliotek OCR, takich jak Tesseract i IronOCR. Biblioteki te umożliwiają dokładne rozpoznawanie tekstu, ułatwiając zarządzanie i wyszukiwanie przydatnych informacji zarówno z wcześniej zeskanowanych dokumentów, jak i zupełnie nowych dokumentów. OCR umożliwia płynną analizę treści i pomaga firmom oraz osobom prywatnym zmaksymalizować wydajność poprzez optymalne wykorzystanie zeskanowanych dokumentów i obrazów stron. OCR jest niezbędnym narzędziem w dzisiejszej technologii, niezależnie od tego, czy służy do digitalizacji dokumentów papierowych, wyodrębniania danych z faktur, czy po prostu do zwiększania dostępności dokumentów.
Tesseract
Najbardziej znanym silnikiem OCR typu open source jest Tesseract, który został pierwotnie stworzony przez firmę Hewlett-Packard. Od 2006 roku Google wspiera ten projekt wolnego oprogramowania, który jest udostępniany na licencji Apache.
Jednym z najdokładniejszych dostępnych systemów open source i darmowych jest silnik OCR Tesseract. Tesseract obsługuje obecnie 116 języków w swojej najnowszej stabilnej wersji 4.1.1, opartej na LSTM.
Tesseract wymaga wsparcia oddzielnego GUI (graficznego interfejsu użytkownika) podczas uruchamiania z poziomu interfejsu wiersza poleceń, ponieważ nie posiada własnego wbudowanego interfejsu. Może uczyć się nowych informacji za pomocą sieci neuronowych i posiada zaawansowany proces przetwarzania wstępnego obrazów. Najskuteczniejszą techniką dodania funkcji OCR do aplikacji .NET jest Tesseract .NET SDK, które jest jednym z najlepszych rozwiązań zapewniających funkcje rozpoznawania tekstu. Mimo że Tesseract jest bez wątpienia najlepszą biblioteką OCR dostępną obecnie na rynku.
GOCR
Do stworzenia programu OCR (Optical Character Recognition) znanego jako GOCR wykorzystano licencję GNU Public License. Przekształca pliki tekstowe z powrotem w zeskanowane obrazy dokumentów. Po uruchomieniu programu i zarządzaniu zespołem programistów na SF, Joerg Schulenburg nadal zajmuje się tym pakietem, poświęcając na to obecnie (bardzo) mało czasu.
Ponieważ GOCR może być używany z kilkoma interfejsami użytkownika, przeniesienie go na inne systemy operacyjne, aplikacje sieciowe i architektury jest stosunkowo proste. Obsługuje szeroki zakres typów plików graficznych, a do 2010 roku jego jakość stale się poprawiała.
Według GOCR obsługuje on jednokolumnowe czcionki bezszeryfowe o wysokości 20–60 pikseli. Zgłasza trudności z tekstem napisanym alfabetami innymi niż łaciński, czcionkami szeryfowymi, nakładającymi się literami, różnymi krojami pisma, zaszumionymi zdjęciami i nadmiernymi kątami pochylenia. GOCR potrafi również tłumaczyć barcode.
CuneiForm
CuneiForm, bezpłatna technologia typu open source, znana jest obecnie również jako "Cognitive OpenOCR". Posiada wbudowaną funkcję generowania danych wyjściowych oraz bazę danych. Obsługuje 23 różne języki, a także wykonuje zadania takie jak skanowanie formatów tekstu, analiza układu dokumentów oraz identyfikacja.
Firma Cognitive Technologies opracowała licencje dla OpenOCR, które są licencjami freeware i BSD. Chociaż obsługuje on korzystanie na wielu platformach, użytkownicy systemu Linux nie mają dostępu do interfejsu graficznego.
Aby uprościć rozpoznawanie znaków w dowolnych aplikacjach opartych na .NET Framework 2.0 lub nowszej, stosowana jest biblioteka opakowująca Puma Dot NET. Podczas przetwarzania danych przeprowadza sprawdzanie słownikowe w celu poprawy jakości rozpoznawania.
CuneiForm to technologia zaprojektowana do automatycznego lub półautomatycznego przekształcania elektronicznych kopii dokumentów papierowych i plików graficznych w formę edytowalną bez wpływu na strukturę i oryginalne czcionki dokumentu. System składa się z dwóch części służących do przetwarzania dokumentów elektronicznych w partiach oraz pojedynczo. Ponadto system obsługuje połączenie języków rosyjskiego i angielskiego. Tylko gałąź utworzona przez Andreia Borovsky'ego w 2009 roku obsługuje rozpoznawanie innych języków hybrydowych. Nauczenie systemu rozpoznawania innych języków stanowi wyzwanie, ponieważ każdy język jest powiązany z plikiem dat, którego struktura i proces tworzenia nie są ujawniane przez twórców.
Kraken
Kraken został opracowany w celu rozwiązania problemów związanych z Ocropus bez wpływu na jego pozostałe funkcje. Wykorzystuje bibliotekę sieci neuronowej CLSTM oraz czerpie z cennego doświadczenia zdobytego podczas poprzednich projektów, stosując najnowsze dane. Wymaga to użycia pewnych bibliotek zewnętrznych, aby działać skutecznie na różnych platformach. Dzięki zgromadzonym informacjom może on dokonywać dokładniejszych prognoz dotyczących potencjalnych problemów z walidacją danych. Ponadto stosowana metodologia ułatwia wdrażanie nowych modeli i szkolenia z ich obsługi.
A9T9
A9T9 to darmowe oprogramowanie OCR, które można wykorzystać do wyodrębniania tekstu z plików graficznych oraz konwertowania obrazów i dokumentów PDF. Zapewnia graficzny interfejs użytkownika (GUI) dla silnika OCR Tesseract.
Program jest łatwy w konfiguracji. Co najważniejsze, jest całkowicie darmowy i oparty na otwartym kodzie źródłowym. Nie zawiera oprogramowania szpiegującego ani reklamowego.
Można otworzyć plik PDF lub obraz, a zawartość pliku źródłowego zostanie wyświetlona w lewym oknie. Jeśli dokument ma wiele stron lub jest dokumentem wielostronicowym, możesz użyć strzałek na dole strony, aby poruszać się między stronami.
Aby rozpocząć proces OCR, wystarczy kliknąć zielony przycisk OCR, a wynik pojawi się w drugim prawym panelu. Możesz zapisać tekst wyjściowy zarówno jako pliki tekstowe, jak i dokumenty WORD.
IronOCR
W przeciwieństwie do standardowej biblioteki Tesseract, IronOCR rozszerza możliwości Tesseract i zapewnia natywną bibliotekę OCR w języku C# o wyższej dokładności, lepszej wydajności i zwiększonej stabilności. IronOCR może być używany w programach .NET i na stronach internetowych do wyodrębniania tekstu z plików PDF i obrazów. Obsługuje szeroki zakres języków obcych i może generować dane wyjściowe w postaci zwykłego tekstu lub danych ustrukturyzowanych. Umożliwia skanowanie barcode'ów i obrazów zawierających tekst. Biblioteka może być wykorzystywana w aplikacjach tworzonych w .NET dla konsoli, sieci, MVC i komputerów stacjonarnych. Zespół programistów oferuje bezpośrednią pomoc w procesie licencjonowania na potrzeby wdrożeń komercyjnych. IronOCR jest kompatybilny z najnowszymi wersjami Visual Studio.
Zalety IronOCR
- Dzięki najnowszemu silnikowi Tesseract 5, IronOCR potrafi odczytywać dokumenty papierowe, BarCodes i kody QR z różnych plików graficznych lub PDF. Ten pakiet ułatwia wdrażanie OCR w aplikacjach desktopowych, konsolowych i internetowych.
- IronOCR umożliwia nam wykonywanie OCR, co pozwala nam konwertować zeskanowane pliki PDF na pliki PDF z możliwością wyszukiwania.
- Oprócz list słów i języków niestandardowych, IronOCR obsługuje 125 różnych języków na całym świecie.
- IronOCR może skanować ponad 20 różnych rodzajów kodów kreskowych i kodów QR.
- IronOCR może generować dane w postaci zwykłego tekstu, a także danych z BarCode. Programiści mogą pobrać całą zawartość w celu bezpośredniego wprowadzenia do systemu przy użyciu alternatywnego paradygmatu obiektów danych strukturalnych. Obejmuje to uporządkowane nagłówki, akapity, wiersze, słowa i znaki w aplikacjach internetowych.
Poniżej znajduje się przykładowy kod, którego użyjemy do rozpoznania treści tekstowej z podanego obrazu i przekształcenia jej w tekst.
using IronOcr;
// Instantiate an IronTesseract object to utilize its OCR capabilities
var Ocr = new IronTesseract();
// Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest;
// Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
// Create an OcrInput object to add images for OCR processing
using (var Input = new OcrInput())
{
// Add the image to be processed; specify the image's path
Input.AddImage(@"Demo.png");
// Perform the OCR and store the result
var Result = Ocr.Read(Input);
// Output the extracted text to the console
Console.WriteLine(Result.Text);
// Pause the console to keep it open
Console.ReadKey();
}
using IronOcr;
// Instantiate an IronTesseract object to utilize its OCR capabilities
var Ocr = new IronTesseract();
// Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest;
// Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
// Create an OcrInput object to add images for OCR processing
using (var Input = new OcrInput())
{
// Add the image to be processed; specify the image's path
Input.AddImage(@"Demo.png");
// Perform the OCR and store the result
var Result = Ocr.Read(Input);
// Output the extracted text to the console
Console.WriteLine(Result.Text);
// Pause the console to keep it open
Console.ReadKey();
}
Imports IronOcr
' Instantiate an IronTesseract object to utilize its OCR capabilities
Private Ocr = New IronTesseract()
' Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest
' Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
' Create an OcrInput object to add images for OCR processing
Using Input = New OcrInput()
' Add the image to be processed; specify the image's path
Input.AddImage("Demo.png")
' Perform the OCR and store the result
Dim Result = Ocr.Read(Input)
' Output the extracted text to the console
Console.WriteLine(Result.Text)
' Pause the console to keep it open
Console.ReadKey()
End Using
W powyższym fragmencie kodu tworzymy funkcję przy użyciu IronTesseract. Najpierw tworzymy instancję nowego obiektu OcrInput, aby umożliwić dodanie jednego lub więcej plików graficznych. Możesz dodać dowolną liczbę obrazów, podając ścieżkę do każdego z nich za pomocą metody AddImage. Po dodaniu obrazów wywoływana jest metoda Read na obiekcie IronTesseract w celu przeprowadzenia OCR na podanych danych wejściowych. Powstały tekst jest następnie wyodrębniany i wyświetlany za pośrednictwem konsoli.
Poniższy wynik przedstawia tekst wyodrębniony z wcześniej dostarczonego obrazu, co pokazuje, że tekst został pomyślnie wyodrębniony z obrazu.

Zobacz ten post, aby uzyskać szczegółowe instrukcje dotyczące IronOCR.
Wnioski
Narzędzia OCR typu open source pozwalają nam tworzyć własne programy przy użyciu ich kodu źródłowego. Niektóre narzędzia nie posiadają jednak oficjalnej biblioteki ani dedykowanego zespołu zapewniającego wsparcie w przypadku problemów z kodowaniem. W dokumentacji Tesseract brakuje również przykładowego kodu lub samouczków dotyczących typowych scenariuszy użytkowania, co utrudnia początkującym zrozumieniuiuiuiuie kodu i bibliotek.
IronOCR obsługuje różne projekty .NET, takie jak .NET Framework Standard 2, .NET Framework 4.5 oraz .NET Core 2, 3 i 5. Współpracuje również z nowszymi technologiami, takimi jak Mono, Xamarin i Azure. Wykorzystując technologie IronOCR, możemy poprawić wyniki Tesseracta i skorygować niedokładnie zeskanowane dokumenty lub obrazy. Złożony system słowników Tesseract jest zarządzany za pośrednictwem pakietu NuGet. Wykorzystujemy bibliotekę Iron OCR do tworzenia narzędzia OCR.
Dzięki IronOCR możemy korzystać z programu bez dodatkowej konfiguracji, a obsługuje on pliki PDF, wielo-ramkowe TIFF oraz wszystkie popularne formaty obrazów. Oferuje również funkcje rozpoznawania kodów barcode, co pozwala nam wyodrębniać dane z kodów barcode i odczytywać wartości kodów barcode z obrazów. IronOCR oferuje ekonomiczną wersję deweloperską z bezpłatną wersją próbną, a dożywotnia licencja jest zawarta w pakiecie IronOCR bez dodatkowych kosztów. Pakiet IronOCR zapewnia obsługę wielu platform za jednorazową opłatą. Więcej informacji na temat cen IronOCR można znaleźć na tej stronie.




