Software Development / Inżynieria / Office 365

ABBYY FineReader Engine

Sierpień 13, 2018 0
Podziel się:

W niniejszym artykule postaram się przybliżyć jedno z najlepszych rozwiązań OCR dostępnych na rynku. W pierwszej części wpisu przedstawię ogólne informacje o silniku, a następnie opiszę jego cechy i zalety. Na koniec zaprezentuję prosty przykład implementacji silnika do przeprowadzenia procesu OCR, który dokona konwersji z pliku graficznego do pliku tekstowego.

Czym jest ABBYY FineReader Engine?

ABBYY FineReader Engine to zbiór narzędzi, które umożliwiają tworzenie rozwiązań wspomagających:

  • OCR – rozpoznawanie tekstów drukowanych maszynowo
  • ICR – rozpoznawanie tekstów napisanych ręcznie
  • OMR – Rozpoznawanie znaków optycznych
  • OBR – rozpoznawanie kodów kreskowych

Schemat Integracji

Źródło (na 13.08.2018): link

Na czas pisania tego artykułu do procesów OCR jest dostępnych: 208 języków drukowanych, 126 języków do rozpoznawania pisma ręcznego oraz 28 kodów kreskowych.

Wsparcie dla systemów Windows, Linux, Mac OS
Wsparcie dla języków C++, C#, Visual Basic .NET, Javascript , VBScript, Delphi, Java

Prestiżowy portal TechRadar w czerwcu 2018 wyróżnił ABBYY FineReader Engine tytułem „Najlepsze oprogramowanie skanujące 2018”.
Link do pełnego artykułu można znaleźć tutaj .

Proces OCR – Etapy

1. Import obrazu
Silnik potrafi wczytywać obraz z wielu źródeł. Zaimportowane mogą zostać pliki graficzne zawierające tekst w formacie TIFF, JPEG, BMP, PDF i wiele innych. Powszechnym sposobem jest dostarczenie obrazu ze skanera za pomocą interfejsu TWAIN/WIA, a także obrazów pochodzących z urządzeń mobilnych.

2. Pre-processing obrazu
Po otrzymaniu obrazu ze źródła zostaje on poddany procesowi „wstępnego przetwarzania”. W celu zwiększenia dokładności rozpoznawania, obraz jest poprawiany pod względem jakości za pomocą funkcji (transformacja obrazu, binaryzacja, „de-skewing”, usuwanie szumu, itp.).

3. Analiza dokumentu
Za pomocą algorytmów opartych na sztucznej inteligencji oraz technologii ABBYY Adaptive Document Recognition, OCR dokonuje analizy układu każdej indywidualnej strony biorąc pod uwagę dokument jako całość. Proces definiuje przestrzenie dla rozpoznawania tekstu i dostarcza informacje na temat układu i formatu elementów do finalnej rekonstrukcji dokumentu na koniec procesu.

4. Rozpoznawanie
Do rozpoznawania tekstu silnik dostarcza złożony zestaw technologii. Silnik z największą dokładnością potrafi wyodrębnić teksty drukowane (OCR), pisane ręcznie (ICR), znaki (OMR) oraz kody kreskowe (OBR). Dzięki możliwości stworzenia własnych słowników i wzorów rozpoznawania, programista może zwiększyć dokładność rozpoznawania tekstów napisanych w konkretnych językach, niestandardowych znaków czy czcionek.

5. Eksport tekstu i rekonstrukcja dokumentu
Ostatni etap OCR to eksport danych w zależności od ustawień. SDK udostępnia wiele opcji eksportu i wiele poziomów rekonstrukcji układu dokumentu. Dozwolone formaty to np. txt, XML, PDF i PDF/A, edytowalne dokumenty Microsoft Office i inne.

Zalety silnika

  • Wykorzystanie wielordzeniowych procesorów – ABBYY FineReader wspomaga przetwarzanie obrazów równolegle na wielu wątkach. Domyślnym ustawieniem jest automatyczne wykrywanie, czy przetwarzanie wieloprocesorowe jest potrzebne.
  • Komponenty UI – oparte na ActiveX komponenty pozwalają tworzyć interfejs do podglądu, przetwarzania, edycji, weryfikacji i monitorowania procesu rozpoznawania.
  • Chmura i środowiska wirtualne – istnieje specjalny typ licencji przeznaczony do pracy przy rozwiązaniach chmurowych. Dzięki niemu użytkownik ma szerszy zakres aplikacji i usług:
    • wirtualne środowiska: Oracle VM VirtualBox, Docker containers
    • chmura: Amazon AWS , Microsoft Azure
  • Rozpoznawanie wizytówek – SDK umożliwia wyodrębnienie danych z dokumentów skanowanych lub fotografowanych jako kilka obrazów na jednej stronie. Rozpoznane dane mogą zostać zapisane w formacie .vCard (format często wykorzystywany do wysyłania wizytówek pocztą e-mail lub przez sieć) lub w innych formatach (XML, Docx, Xlsx, Pdf, itp.).
  • Możliwość stworzenia własnego języka rozpoznawania
  • Skaner – tworzenie aplikacji z wykorzystaniem skanera
  • Klasyfikowanie dokumentów – tworzenie aplikacji wspomagających kategoryzowania plików do predefiniowanych klas (realizacja przez uczenie maszynowe i NLP).
  • Dokumentacja – SDK posiada szczegółową dokumentację wraz ze źródłami kodu we wszystkich wspieranych językach programowania. Próbki kodu obejmują rozwiązania związane z klasyfikacją dokumentów, przetwarzaniem w batchu, nauką wzorców użytkownika, skanowaniem, tworzeniem UI przy pomocy komponentów, itp. Przyswojenie kodu gotowych programów znacznie przyspiesza proces uczenia się SDK silnika.

Instalacja wersji trial SDK

1. Zgłoszenie zapotrzebowania na licencję próbną (60 – dniową) na stronie.
2. Przeczytanie i podpisanie zgody na licencję Trial.
3. Pobranie plików i instalacja oprogramowania z otrzymanym kluczem.
4. Aktywowanie licencji.

Przykładowa implementacja w C#

Ze względu na to, że na co dzień pracuję w C#, przedstawię najprostszy przykład implementacji w tym języku. Aplikacja będzie przeznaczona do przeprowadzenia procesu OCR na danym pliku graficznym i wyeksportowaniu wyniku w formacie rtf.

Podstawową operacją przy aplikacjach wykorzystujących silnik ABBYY FineReader jest załadowanie silnika przez stworzenie obiektu EngineLoader, przekazując w parametrze uzyskaną licencję developerską „Serial Number”.

//Wczytanie silnika
private void LoadEngine()
{
    if(engineLoader == null)
    {
        engineLoader = new EngineLoader(AppConfig.GetDeveloperSN());
    }
}

Następnie należy określić, jakiego profilu chcemy używać. Mamy tutaj do wyboru sporo opcji, niektóre z nich to:

  • DocumentConversion_Accuracy
  • DocumentConversion_Speed
  • HighCompressedImageOnlyPdf
  • BusinessCardsProcessing
  • BarcodeRecognition

Istnieje możliwość dopasowania profilu do potrzeb (czas procesowania, dokładność uzyskanych wyników) i celu (rozpoznawanie kodów kreskowych, zawartości wizytówek, książek itp.).

//Wczytanie profilu
engineLoader.Engine.LoadPredefinedProfile( "DocumentConversion_Accuracy");

Następnie należy stworzyć obiekt FRDocument i wywołać na nim szereg metod:

string imagePath = Path.Combine(AppConfig.GetAppFolder(), @"InputFolder\ImageFile.tif");
FRDocument document = engineLoader.Engine.CreateFRDocument();

try
{
   // Wczytanie obrazu do dokumentu
   document.AddImageFile(imagePath, null, null);

   // Przetwarzanie
   document.Process(null);

   // Zapisanie wyników - plik rtf z domyślnymi parametrami
   document.Export(Path.Combine(AppConfig.GetAppFolder(), @"OutputFolder\TextFile.rtf"),
   FileExportFormatEnum.FEF_RTF, null);
}
catch(Exception error)
{
   MessageBox.Show(this, error.Message, this.Text, MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
   // Zamknięcie dokumentu
   document.Close();
}

Na koniec po wykonaniu operacji OCR należy zwolnić silnik:

private void UnloadEngine()
{
    if (engineLoader != null)
    {
        engineLoader.Dispose();
        engineLoader = null;
    }
}

Licencja i Cena

Silnika ABBYY FineReader możemy używać jedynie z licencją. Do wyboru dostępnych jest kilka opcji:

  • Licencja programistyczna – w celu tworzenia autorskiego rozwiązania (1 klucz sprzętowy zawierający 3 licencje sieciowe)
  • Licencja RTL – w celu uruchomienia aplikacji z rozwiązaniem OCR. Cena jest uzależniona od potrzeb klienta i zależy między innymi od liczby przetwarzanych stron na miesiąc, formatu danych, czasu trwania wsparcia technicznego, itp.
  • Network Concurrent – licencje sieciowe – pozwalają na dzielenie licencji na kilku komputerach w obrębie jednej sieci.

W celu uzyskania informacji cenowych należy wejść na tę stronę i wypełnić formularz.

Podsumowanie

Silnik ABBYY FineReader SDK to narzędzie o ogromnych możliwościach dla szerokiej gamy programistów tworzących rozwiązania na różne platformy. Kod pisany z wykorzystaniem SDK jest prosty z możliwością bardzo szczegółowej konfiguracji na potrzebę określonych celów. Czytelna dokumentacja oraz zestaw gotowych aplikacji testowych sprawiają, że przyswojenie biblioteki staje się niezwykle proste.

Źródła:
https://www.finereader.pl/produkty/narzedzia-programistyczne/abbyy-finereader-engine
https://abbyy.technology/en:business:pricing
https://www.abbyy.com/en-au/support/engine/11win/product_info/sr/
https://abbyy.technology/en:products:fre:finereader_engine_quick_start_guide
https://www.abbyy.com/en-me/ocr-sdk/ocr-stages/

4.9 / 5
Michał Linek
Autor: Michał Linek
.NET Developer

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

Zostaw komentarz