Przejdź do treści

Integracja z skanuj.to

Opis

Moduł ten powstał aby system mógł automatycznie wykrywać tekst z skanów, bądź zdjęć faktur. Integracja w module została wykonana tylko pod kątem samej usługi OCRa zatem nie wspieramy zakładanie firm, aktualizację kontrahentów itp. w pierwszej wersji.

Instalacja

Aby skorzystać z modułu wystarczy pobrać go z "X:\DBR\release\neos\modules\SkanujToOCR" i cały folder wkleić w "Neos\Modules\. Po zrestartowaniu NEOSa należy zweryfikować czy prawidłowo moduł został załadowany. Można to zrobić np. w logach NEOSa lub w oknie Neos.Runtime.exe.

Rejestracja w skanuj.to

Przy każdym wdrożeniu dla klienta należy założyć konto w systemie skanuj.to. Konto powinno zostać założone na klienta ponieważ klient wybiera odpowiedni pakiet dla swoich potrzeb. Na dzień dokumentacji na wiki po założeniu konta jest 45 dni darmowych, gdzie można zeskanować 200 stron.

Ważne!

Ważna uwaga płacimy za stronę, nie za dokument!!!

Wykorzystanie w kodzie

Aby zacząć pisać kod, który będzie wykonywał OCR należy najpierw posiadać konto w skanuj.to. Jeśli mamy konto to potrzebujemy odczytać indywidualny klucz API. Wystarczy zalogować się na swoje konto w skanuj.to a następnie przejść Ustawienia -> Hasło / Klucz API. Posiadając klucz API potrzebujemy wiedzieć jaki identyfikator posiada nasza "firma" w serwisie skanuj.to. Aby otrzymać tą informację mamy 2 drogi.

  1. Zadzwonić do BOK serwisu skanuj.to podać @ klienta, na które zostało założone konto i zapytać o CompanyID naszej firmy.
  2. Wystarczy wykonać następujący kod:

var authorization = new Authorization("login", "apiKey");
var ocrService = new OCRService(authorization);
IEnumerable<CompanyInfo> companies = ocrService.GetUserCompanies();
Kolekcja companies po zalogowaniu będzie zawierać jeden element opisu firmy. Tam znajduje się pole ID w którym będzie interesująca nas wartość ID.

Zlecenie OCRu dla dokumentu (tryb prosty)

Gdy mamy już wszystkie informacje do autoryzacji (logi, apiKEY, id firmy) możemy napisać kod obsługujący OCRa. Najprościej wykorzystać metodę ProcessDocument, która przeprowadzi autoryzację, wyśle dokument do serwisu, poczeka na zakończenie procesu OCRowania, oraz pobierze i zwróci wynik.

Przykład wywołania metody ProcessDocument:

var authorization = new Authorization("login", "apiKey");
var ocrService = new OCRService(authorization);
// Ścieżka do pliku, ID firmy
var fileToOCR = new DocumentInput("Scieżka do pliku", <idFirmy>);
// Obiekt typu DocumentInput, Timeout w sekundach
var result = ocrService.ProcessDocument(fileToOCR, 120);
Przekazujemy ścieżkę do pliku oraz identyfikator naszej firmy. Następnie wywołujemy metodę ProcessDocument, która zajmie się całym procesem przetworzenia dokumentu. Ważne aby odpowiednio ustawić timeout po którym metoda przerwie wykonywanie gdy nie uda się pobrać wyniku dla przekazanego dokumentu. Pełną strukturę obiektu result można wyświetlić w intellisense lub odszukać w dokumentacji https://www.skanuj.to/api.html .

Ważne!

Z informacji na stronie cały proces OCRu trwa około 30 sekund. Jeśli usługa jest bardziej obciążona to ten czas może się wydłużyć.

Opis poszczególnych funkcji (tryb zaawansowany)

Jeśli metoda ProcessDocument nie jest wystarczająca i chcesz w inny sposób zorganizować proces biznesowy to możesz skorzystać z udostępnionych metod obiektu usługi.

Metoda wysyłająca dokument

Przykład metody wysyłającej dokument. Najważniejsze aby zapamiętać dokumentID który otrzymamy w odpowiedzi.

var authorization = new Authorization("login", "apiKey");
var ocrService = new OCRService(authorization);
// Ścieżka do pliku, ID firmy
var fileToOCR = new DocumentInput("Scieżka do pliku", <idFirmy>);
// Obiekt typu DocumentInput, Timeout w sekundach
var result = ocrService.SendDocument(fileToOCR);
var documentID = result.GoodUploads.FirstOrDefault()?.DocId;

Metoda sprawdzająca status przetworzenia dokumentu

Przykład metody, która zwraca informację czy dokument został już przetworzony. Po około 30 sekundach metoda ta powinna zwrócić true.

var authorization = new Authorization("login", "apiKey");
var ocrService = new OCRService(authorization);
// Ścieżka do pliku, ID firmy
var fileToOCR = new DocumentInput("Scieżka do pliku", <idFirmy>);
// ID dokumentu
var result = ocrService.CheckDocumentStatus(0);

Metoda pobierająca przetworzone dane dokumentu

Przykład metody, która zwraca przetworzone dane dokumentu.

var authorization = new Authorization("login", "apiKey");
var ocrService = new OCRService(authorization);
// Ścieżka do pliku, ID firmy
var fileToOCR = new DocumentInput("Scieżka do pliku", <idFirmy>);
// ID dokumentu
var result = ocrService.GetDocumentData(0);

Dodatkowe informacje

  1. Z wszystkich metod mogą polecieć wyjątki. Np. problem z autoryzacją, timeout, brak pliku pod wskazaną ścieżką itp. Należy zadbać o prawidłową obsługę tych wyjątków.
  2. API obsługuje następujące rozszerzenia plików: { ".pdf", ".tif", ".tiff", ".jpg" };
  3. Można wykonać OCR faktur wielo-stornicowych. Należy podczas tworzenia obiektu DocumentInput przekazać informację: multiPages.