SILVERCODERS®
Quality and competence
rzetelna firma

In English Po polsku

Serwis używa cookies.
Możesz je zablokować.

OCR Server - linux ocr - dedykowana maszyna lub aplikacja systemu Linux

Kliknij aby powiększyć ...

Kompleksowe serwerowe rozwiązanie OCR i konwersji PDF dla firm

SILVERCODERS OCR Server jest potężnym i kompletnym serwerowym rozwiązaniem automatycznego rozpoznawania tekstu (OCR) i konwersji PDF dla firm. OCR Server umożliwia przeprowadzenie konwersji skanowanych dokumentów do edytowalnych i przeszukiwalnych formatów takich jak plik tekstowy, rtf, pdf, html, zapewniając wysoką jakość rozpoznawania w 189 językach. Dostępny jako aplikacja systemu Linux lub jako niezależna maszyna, z w pełni udokumentowanym API, bardzo dobrą wydajnością i elastycznymi zasadami licencjonowania serwer może stanowić pojedyncze, centralne rozwiązanie OCR dla Twojej firmy. OCR Server został zaprojektowany specjalnie w celu współpracy z systemami zarządzania dokumentami takimi jak SILVERCODERS DocStorage.
download iconPobierz teraz!
Wersja 1.0.4 dla Linux x86
download iconPobierz teraz!
Tylko klient wer. 1.0.1 dla Linux x86
key iconSkorzystaj z bezpłatnego okresu próbnego
i przedsprzedażowej pomocy technicznej
ok iconZakup licencję, zamów szkolenie,
wdrożenie, zapytaj o cenę
help iconZadaj pytanie, poproś o pomoc
Opisz swoje potrzeby
diff iconZostań oficjalnym dystrybutorem,
zapytaj o ofertę dla dystrybutorów

Optyczne Rozpoznawanie Znaków (OCR)

Oprogramowanie, zawierające techniki (procesy), pozwalające zamienić dokument traktowany jako format graficzny (zdjęcie, skan) na plik w formie tekstowej z możliwością edycji.

Pierwsze urządzenie służące do rozpoznawania znaków tekstu powstało na przełomie lat dwudziestych i trzydziestych dwudziestego wieku i zostało opatentowane przez austriackiego naukowca, którego uważa się za jednego z pionierów współczesnych technologii - Gustava Tauscheka. Jego wynalazek wymagał jednak niezwykłej precyzji w zapisie znaków (delikatne odstępstwa od szablonów uniemożliwiały rozpoznanie tekstu). Dziś rozbudowane systemy OCR są znacznie bardziej wydajne i praktyczne: potrafią rozpoznawać układy tabel, znaki w różnych czcionkach, formatach, a nawet tekst pisany odręcznie.

Zasada działania

Dzięki szybkiemu rozwojowi sztucznej inteligencji, a ściślej ujmując dziedziny rozpoznawania wzorców, możliwa jest identyfikacja pisma i znaków na coraz wyższym jakościowo poziomie. Odpowiednio zaprogramowane sieci neuronowe dokonują podziału obrazu wykorzystując np. metody binaryzacji (progowania) w celu odczytania poszczególnych znaków z obrazu, oraz w kolejnym etapie odpowiedniego pogrupowania (np. na poszczególne litery, znaki interpunkcyjne itp.). Rozpoznane znaki zostają poskładane w tekst, który zazwyczaj (w celu wyeliminowania błędów) sprawdzany jest z językowymi bazami danych (słownikami).

Technologia OCR jest stale rozwijana pod kątem dokładności rozpoznawania, aby produkty OCR skierowane na bardziej złożone środowiska, jak np. zdjęcia z aparatów fotograficznych, spełniały swoje zadania (np. aby radziły sobie ze skomplikowanymi tłami, starymi obrazami, niewyraźnym tłem, zagięciami papieru, zniekształconymi obrazami, niską rozdzielczością, siatkami i liniami w tle, tekstem składającym się ze specjalnych czcionek, symboli, słów glosariuszy itp.)

W ostatnich latach, główni dostawcy technologii OCR zaczęli rozwijać dedykowane systemy OCR, każdy dla specjalnych typów obrazów. Łączą one w sobie różne metody optymalizacyjne związane ze specyfiką obrazu w celu poprawy dokładności rozpoznawania (czytanie znaków z kart kredytowych wymaga innych metod niż rozpoznawanie znaków ze słowników, kolorowych obrazów itd.).

Schematyczne (uproszczone) działanie systemów OCR

  1. Plik graficzny trafia do programu.
  2. Analiza układu (layout) - program wirtualnie dzieli stronę na wygodne do rozpoznawania elementy. Dzieli dostarczony plik graficzny na tekst i inne elementy grafiki, zdjęcia, tabelki itp. Wyodrębniony tekst dzielony jest w następującej kolejności: akapity, zdania, słowa, znaki. Na sam koniec analizy układu OCR zapamiętuje pojedyncze znaki, słowa, zdania, które będą uczestniczyły w późniejszym procesie rozpoznawania.
  3. Proces rozpoznawania znaków - program za pomocą różnych metod identyfikuje znaki. Metody te można podzielić na dwie kategorie:
    1. rozpoznawanie wzorów (pattern matching) - program porównuje każdy ze znaków ze znakami, które zawiera biblioteka - baza danych z różnymi krojami pisma),
    2. rozpoznawanie cech (feature matching) - program rozpoznaje cechy znaków, które są niezależne od wielkości czcionki czy kursywy (np. litera Z to trzy linie, z czego dwie są równoległe do siebie, trzecia linia jest ukośna i łączy wierzchołki linii równoległych).

Przykładowe korzyści płynące z zastosowania systemu OCR w przedsiębiorstwie

  1. Skomputeryzowanie firm i życia codziennego spowodowało zwiększenie zużycia papieru (zamiast zmniejszyć zużycie): faktury, faksy, oferty, umowy, instrukcje obsługi, materiały gwarancyjne, pisma, artykuły, reklamy - nieraz z ilością takiej dokumentacji papierowej nie może sobie poradzić przeciętne gospodarstwo domowe, a co dopiero firma. Ponadto niektóre dokumenty drukowane są nam potrzebne w wersji elektronicznej lub przynajmniej posiadanie takiej wersji znacznie ułatwiłoby procedury i skróciło czas oczekiwania na realizację jakiejś procedury. Wyliczono natomiast, że jedna osoba przepisująca 2 strony A4 dziennie, w ciągu roku na samym przepisywaniu spędza około 25 dni roboczych (5 tygodni pracy). Wyliczono natomiast, że średniej klasy skaner wraz z systemem OCR jest około 100 razy szybszy niż pisarz z wieloletnim doświadczeniem.
  2. Elektroniczny obieg faktur, czy innych dokumentów jest niezwykle wygodnym i korzystnym rozwiązaniem dla firm. Zapobiega możliwości zagubienia dokumentu, długiego przetrzymywania go przez dział lub inną firmę, jego uszkodzenia czy zniszczenia. Wystarczy tylko posortowane dokumenty zeskanować i poddać obróbce przez system OCR.

Podsumowując zastosowanie systemów OCR pozwala zaoszczędzić firmie czas, pieniądze oraz zmniejszyć ryzyko popełnienia błędu (np. przy przepisywaniu dokumentów).

Rozdział 1. Instalacja

1.1. Wymagania wstępne

Program jest z założenia kompatybilny z systemami Linux na architekturze x86. Powinien działać bez problemów na wszystkich współczesnych dystrybucjach GNU/Linux.

Proszę sprawdzić czy narzędzia tcpserver i tcpclient są zainstalowane w jednej z lokalizacji uwzględnionych w zmiennej środowiskowej PATH. Narzędzia te pochodzą z pakietu ucspi-tcp.

Proszę sprawdzić czy narzędzie curl jest zainstalowane w jednej z lokalizacji uwzględnionych w zmiennej środowiskowej PATH. Curl jest potrzebny przy procesie aktywacji.

Do wykonania upgradu niezbędne jest narzędzie xdelta3. Proszę sprawdzić czy narzędzie to jest zainstalowane w jednej z lokalizacji uwzględnionych w zmiennej środowiskowej PATH. Narzędzie to pochodzi z pakietu xdelta w wersji 3 lub z pakietu xdelta3.

Powyższe zalecenia należy wziąć pod uwagę zgłaszając problemy związane z aplikacją.

1.2. Instalacja programu

Aby zainstalować OCR serwer należy po prostu rozpakować plik archiwum "ocr_server-(numer wersji).tar.bz2" do docelowej lokalizacji.

Do instalacji programu w wersji "upgrade" niezbędny jest plik archiwum z ostatnią dostępną pełną wersją instalacyjną poprzedzającą instalowaną wersję. W docelowej lokalizacji należy wykonać następujące polecenie:

XDELTA="-R -c -s ocr_server-(numer wersji pełnej).tar.bz2" \
	tar --use-compress-program=xdelta3 -xvf ocr_server-(numer wersji upgrade).tar.xdelta3

Nie ma potrzeby wykonywania dodatkowych zadań.

1.3. Aktywacja

OCR Server nie będzie funkcjonował bez aktywacji.

Należy być zalogowanym jako root aby aktywować aplikację. Proszę uruchomić skrypt activate.sh. OCR Server jest aktywowany za pośrednictwem Internetu. Połączenie z Internetem jest wymagane. Aktywacja jest przeprowadzana automatycznie. Proszę wpisać numer seryjny w odpowiednim momencie.

Rozdział 2. Uruchomienie

2.1. Uruchomienie serwera

Aby uruchomić serwer, należy wywołać skrypt ocr_server.sh. OCR Server uruchomi się na domyślnym porcie numer 10000. Jeśli wymagane jest użycie innego portu należy dodać argument linii poleceń jak poniżej:

./ocr_server.sh 10001

Często zachodzi potrzeba uruchomienia serwera w tle, aby pozostał on aktywny po wylogowaniu się użytkownika. Efekt taki można uzyskać posługując się przedstawioną poniżej komendą. Wszelkie komunikaty wypisywane dotychczas na konsoli zapisywane będą do pliku "ocr_server.log".

nohup ./ocr_server.sh > ocr_server.log 2>&1 &

2.2. Uruchomienie klienta

Aby uruchomić klienta, należy wywołać skrypt ocr_client.sh. Dwa argumenty linii poleceń są wymagane. Pierwszy argument to adres IP komputera na którym jest uruchomiony OCR Server. Jeśli numer portu nie jest uwzględniony to klient spróbuje połączyć się używając domyślnego numeru portu 10000. Drugi argument to ścieżka do pliku wejściowego. Proszę zapoznać się z przykładami poniżej:

./ocr_client.sh 127.0.0.1 ~/images/test.jpg
./ocr_client.sh 192.168.0.2:10001 fax_for_ocr.pdf

Jeśli ocr_client.sh zostanie uruchomiony z nieprawidłowymi argumentami linii poleceń, zostanie wyświetlony poniższy tekst pomocy:

Usage: ocr_client.sh HOST[:PORT] [OPTION ...] FILE
HOST            OCR Server host, eg. 127.0.0.1
PORT            OCR Server port, default is 10000
-e FORMAT       export format: text | rtf | pdf | html | bmp | jpeg | png | tiff_jpeg | tiff_zip
-m LANG_CODE    messages language, eg. de or fr
-r LANG_CODE    recognition language, eg. de or fr
-w WIDTH        image width (for image format export)
-h HEIGHT       image height (for image format export)

Rozdział 3. Obsługiwane języki

3.1. Języki obsługiwane podczas rozpoznawania tekstu

Tabela 3-1. Języki obsługiwane podczas rozpoznawania tekstu i odpowiadające im kody

KodNazwa języka
abAbkhaz
afAfrikaans
sqAlbanian
hyArmenianEastern,ArmenianGrabar,ArmenianWestern
ayAymara
azAzeriCyrillic,AzeriLatin
baBashkir
euBasque
beBelarusian
brBreton
bgBulgarian
caCatalan
chChamorro
ceChechen
zh_CNChineseSimplified
zh_TWChineseTraditional
cvChuvash
coCorsican
hrCroatian
csCzech
daDanish
nl_NLDutch
nl_BEDutchBelgian
enEnglish
eoEsperanto
etEstonian
foFaeroese
fjFijian
fiFinnish
frFrench
fyFrisian
gdGaelicScottish
glGalician
lgGanda
deGerman
de_LUGermanLuxembourg
elGreek
gnGuarani
haHausa
heHebrew
huHungarian
isIcelandic
ioIdo
idIndonesian
iaInterlingua
gaIrish
itItalian
jaJapanese
kkKazakh
kiKikuyu
kyKirgiz
kgKongo
koKorean
kuKurdish
laLatin
lvLatvian
ltLithuanian
luLuba
mkMacedonian
mgMalagasy
msMalay
mtMaltese
miMaori
moMoldavian
mnMongol
nbNorwegianBokmal
nnNorwegianNynorsk
nyNyanja
ieOccidental
ojOjibway
osOssetic
plPolish
pt_BRPortugueseBrazilian
pt_PTPortugueseStandard
quQuechua
rmRhaetoRomanic
roRomanian
rnRundi
ruRussian
smSamoan
srSerbianCyrillic
snShona
skSlovak
slSlovenian
soSomali
stSotho
esSpanish
suSunda
swSwahili
svSwedish
tlTagalog
tyTahitian
tgTajik
ttTatar
toTongan
tnTswana
trTurkish
tkTurkmen
ugUighurCyrillic,UighurLatin
ukUkrainian
uzUzbekCyrillic,UzbekLatin
cyWelsh
woWolof
xhXhosa
zuZulu
noNorwegian

Silnik programu OCR Server potrafi obsługiwać także inne, nie wymienione w tabeli języki podczas rozpoznawania tekstu. Nie mają one jednak odpowiadających im kodów. W sprawie obsługi innych języków prosimy o kontakt z producentem lub dystrybutorem.

3.2. Dostępne języki komunikatów serwera

Tabela 3-2. Dostępne języki komunikatów serwera i odpowiadające im kody

KodNazwa języka
enEnglish
ruRussian
deGerman
frFrench
esSpanish
itItalian
nlDutchStandard
svSwedish
ptPortuguese

Rozdział 4. Protokół

4.1. Zasady ogólne

OCR Server i klient porozumiewają się używając protokołu TCP/IP. W większości przypadków bardziej praktyczne będzie bezpośrednie użycie tego protokołu we własnej aplikacji zamiast uruchamiania narzędzia klienckiego.

Poza nielicznymi wyjątkami wymiana informacji pomiędzy klientem i serwerem następuje w formie tekstowej. Komendy i odpowiedzi serwera są proste, samoopisujące się oraz czytelne dla człowieka. Każdy komunikat stanowi jedną linię tekstu i zakończony jest znakiem nowego wiersza o kodzie 0x0A ('\n').

Na początku dialogu oraz po zakończeniu wykonywania każdej z komend serwer wysyła wiadomość "Send a command now." oznaczającą gotowość do wykonywania poleceń i będącą zaproszeniem do wysłania kolejnej komendy. Komunikat ten wysyłany jest niezależnie od tego czy proces wykonywany przez serwer zakończył się sukcesem jak w przykładzie poniżej:

< Send a command now.
> Set recognition language to fr
< Done.
< Send a command now.

czy błędem jak w przykładzie poniżej.

< Send a command now.
> Set recognition language to xx
< Error: One or more arguments are invalid
< Send a command now.

Bezpośrednio po nawiązaniu połączenia przez klienta serwer wysyła dwa komunikaty. Pierwszy z nich jest formą powitania, drugi jest opisywanym powyżej zaproszeniem.

< SILVERCODERS OCR Server
< Send a command now.

Zazwyczaj bezpośrednio po poprawnym wykonaniu komendy serwer wysyła do klienta jej wynik, jak w przykładzie poniżej:

< Send a command now.
> Get serial number
< FFFF-1111-2222-3333-4444
< Send a command now.

lub komunikat "Done." jeśli wykonano komendę nie zwracającą żadnego wyniku, jak w przykładzie poniżej.

< Send a command now.
> Set image format to jpeg
< Done.
< Send a command now.

4.2. Get server version

Gdy ta komenda zostanie wysłana OCR Server poda swoją wersję.

< Send a command now.
> Get server version
< 1.0.3
< Send a command now.

4.3. End session

Gdy ta komenda zostanie wysłana OCR Server zakończy bieżącą sesję i przerwie połączenie.

< Send a command now.
> End session
< Bye.

4.4. Set protocol version to

Gdy ta komenda zostanie wysłana OCR Server zmieni bieżący protokół na podaną wersję jeśli jest ona obsługiwana.

W chwili obecnej tylko wersja 1 protokołu jest obsługiwana.

< Send a command now.
> Set protocol version to 1
< Done.
< Send a command now.

4.5. Set messages language to

Gdy ta komenda zostanie wysłana OCR Server zmieni bieżący język komunikatów na podany jeśli jest on obsługiwany.

Język komunikatów to język używany do wysyłania błędów oraz podpowiedzi dotyczących rozpoznawania.

< Send a command now.
> Set messages language to fr
< Done.
< Send a command now.

4.6. Set recognition language to

Gdy ta komenda zostanie wysłana OCR Server zmieni bieżący język rozpoznawania na podany jeśli jest on obsługiwany.

Język rozpoznawania to język używany do rozpoznawania tekstu w dokumentach. Ustawienie poprawnego języka rozpoznawania, odpowiadającego dokumentom, które będą przetwarzane podczas procesu OCR jest bardzo istotne ponieważ OCR Server używa słowników wyrazów aby zwiększyć jakość rozpoznawania.

< Send a command now.
> Set recognition language to fr
< Done.
< Send a command now.

4.7. Upload document

Gdy ta komenda zostanie wysłana OCR Server odbierze plik dokumentu źródłowego, sprawdzi jego format oraz przetworzy go, aby uzyskać obrazy wszystkich stron dokumentu.

< Send a command now.
> Upload document
< Send file now.
> Extension: tif
> Size: 25276245
> Checksum: 38421
> --- DANE PLIKU ---
< Page: 0
> Continue
< Page: 1
> Continue
< Page: 2
> Continue
< Page: 3
> Continue
< Done.
< Send a command now.

4.8. Get number of pages

Gdy ta komenda zostanie wysłana OCR Server poda ilość stron, które zostały pozyskane z odebranego pliku dokumentu.

< Send a command now.
> Get number of pages
< 3
< Send a command now.

4.9. Set image width to

Gdy ta komenda zostanie wysłana OCR Server zmieni szerokość obrazu zwracanego przez komendę "Get image of page".

< Send a command now.
> Set image width to 300
< Done.
< Send a command now.

4.10. Set image height to

Gdy ta komenda zostanie wysłana OCR Server zmieni wysokość obrazu zwracanego przez komendę "Get image of page".

< Send a command now.
> Set image height to 200
< Done.
< Send a command now.

4.11. Set image format to

Gdy ta komenda zostanie wysłana OCR Server zmieni format obrazu zwracanego przez komendę "Get image of page".

< Send a command now.
> Set image format to jpeg
< Done.
< Send a command now.

Obsługiwane są następujące formaty obrazów:

4.11.1. bmp

Format pliku BMP, nazywany czasem bitmapą, jest formatem obrazu używanym do przechowywania cyfrowych obrazów, szczególnie w środowiskach systemów operacyjnych MS Windows i OS/2.

4.11.2. jpeg

JPEG File Interchange Format (JFIF) jest formatem obrazu służącym wymianie plików JPEG zgodnych ze standardem JPEG Interchange Format (JIF).

4.11.3. png

Portable Network Graphics (PNG) jest formatem obrazu używającym bezstratną kompresję danych. PNG został stworzony aby udoskonalić i zastąpić format GIF, jako format obrazu nie wymagający licencji patentowej.

4.11.4. tiff_jpeg

Tagged Image File Format (w skrócie TIFF) jest formatem plików służącym przechowywaniu obrazów, włącznie z fotografiami oraz szkicami. Ten format używa kompresji JPEG.

4.11.5. tiff_zip

Tagged Image File Format (w skrócie TIFF) jest formatem plików służącym przechowywaniu obrazów, włącznie z fotografiami oraz szkicami. Ten format używa kompresji ZIP.

4.12. Enable page breaks in plain text

Gdy ta komenta zostanie wysłana OCR Server włączy podział na strony w tekście niesformatowanym zwracanym przez komendę "Export document as plain text". Do oddzielenia stron używany jest znak "form feed" (0xC heksadecymalnie).

< Send a command now.
> Enable page breaks in plain text
< Done.
< Send a command now.

Ta komenda wymaga serwera w wersji 1.0.2 lub późniejszej.

4.13. Get image of page

Gdy ta komenda zostanie wysłana OCR Server wyśle obraz strony o podanym numerze.

< Send a command now.
> Get image of page 0
< Done.
< Extension: jpg
< Size: 144628
< Checksum: 33381
< --- DANE PLIKU ---
< Send a command now.

Domyślna szerokość i wysokość zwracanego obrazu jest odczytywana z dokumentu źródłowego, ale mogą być one zmienione przy użyciu komend "Set image width to" i "Set image height to".

Domyślnym formatem zwracanego obrazu jest PNG ale może być on zmieniony przy użyciu komendy "Set image format to".

4.14. Recognize page

Gdy ta komenda zostanie wysłana OCR Server przeprowadzi proces rozpoznawania strony o podanym numerze.

< Send a command now.
> Recognize page 0
< Progress: 0
> Continue
< Progress: 0
> Continue
< Progress: 0
...
< Progress: 1
> Continue
< Progress: 19
> Continue
< Rect: 2376 134 2526 222
> Continue
< Tip: Increase resolution to improve recognition accuracy of small text.
> Continue
< Progress: 19
> Continue
< Rect: 332 372 480 418
...
< Progress: 100
> Continue
< Done.
< Send a command now.

4.15. Export document as

Gdy ta komenda zostanie wysłana OCR Server wyśle rezultaty rozpoznawania w podanym formacie.

< Send a command now.
> Export document as plain text
< Progress: 0
> Continue
< Progress: 0
> Continue
< Progress: 25
> Continue
< Progress: 50
> Continue
< Progress: 75
> Continue
< Progress: 100
> Continue
< Done.
< Extension: txt
< Size: 8533
< Checksum: 46941
< --- DANE PLIKU ---
< Send a command now.

Obsługiwane są poniższe formaty eksportu:

4.15.1. plain text

Format tekstu niesformatowanego (Plain text) jest idealnym rozwiązaniem dla indeksowania oraz przeszukiwania. Może być edytowany przy użyciu edytorów tekstu.

4.15.2. rtf

Rich text format jest idealnym rozwiązaniem dla potrzeb dalszej edycji. Zachowuje on układ dokumentu oraz osadzone obrazy. Może być edytowany przy użyciu większości nowoczesnych procesorów tekstu.

4.15.3. pdf

Przenośny format dokumentu (Portable document format) jest idealnym rozwiązaniem dla drukowania. Edycja jest w chwili obecnej ograniczona do pewnych wyspecjalizowanych, komercjalnych aplikacji.

4.15.4. html

Format HTML jest idealnym rozwiązaniem dla publikowania rozpoznanego tekstu na stronach internetowych. Może być edytowany przy użyciu edytorów tekstu oraz narzędzi webmasterskich.

4.16. Pobieranie informacji o aktualnej licencji

Każda licencja ma ograniczenie na ilość jednostek pomiaru (stron lub znaków) przetwarzanych podczas okresu czasu (godziny, dnia, tygodnia, miesiąca lub roku). Dodatkowo istnieją licencje, które mają limit nieodnawialny.

Licencje mogą być tymczasowe (wygasną w konkretnym dniu lub po określonej liczbie dni) lub stałe.

4.16.1. Get serial number

Gdy ta komenda zostanie wysłana OCR Server poda numer seryjny aktualnej licencji.

< Send a command now.
> Get serial number
< FFFF-1111-2222-3333-4444
< Send a command now.

4.16.2. Get counter measure unit

Gdy ta komenda zostanie wysłana OCR Server poda jednostkę pomiaru ograniczenia aktualnej licencji. Może to być "pages" (strony) lub "characters" (znaki).

< Send a command now.
> Get counter measure unit
< pages
< Send a command now.

4.16.3. Get limitation period

Gdy ta komenda zostanie wysłana OCR Server poda okres czasu ograniczenia aktualnej licencji. Może to być "hour" (godzina), "day" (dzień), "week" (tydzień), "month" (miesiąc), "year" (rok) or "infinite" (nieograniczony). Jeśli jest to "infinite" to licencja ma limit nieodnawialny.

< Send a command now.
> Get limitation period
< month
< Send a command now.

4.16.4. Get units per period

Gdy ta komenda zostanie wysłana OCR Server poda maksymalną ilość jednostek, które mogą być wykorzystane w jednym okresie czasu według ograniczenia aktualnej licencji.

< Send a command now.
> Get units per period
< 10000
< Send a command now.

4.16.5. Get remaining units

Gdy ta komenda zostanie wysłana OCR Server poda pozostałą ilość jednostek, które mogą mogą być wykorzystane w bieżacym okresie czasu według ograniczenia aktualnej licencji.

< Send a command now.
> Get remaining units
< 9997
< Send a command now.

4.16.6. Get expiration date

Gdy ta komenda zostanie wysłana OCR Server poda datę wygaśnięcia aktualnej licencji. Zwracana jest data w formacie ISO (YYYY-MM-DD) lub "none" (brak) jeśli licencja jest stała.

< Send a command now.
> Get expiration date
< none
< Send a command now.

4.17. Transmisja plików

Niektóre polecenia jak "Upload document" lub "Export document as" wymagają przesłania pliku do lub z OCR Server. Protokół zawiera możliwość transmisji pliku i sprawdzenia jego poprawności.

4.17.1. Nagłówek pliku

Każdy przesyłany plik rozpoczyna się nagłówkiem. Każdy nagłówek składa się z trzech linii. Każda linia rozpoczyna się prefiksem. Prefiks jest oddzielony od wartości dwukropkiem i spacją.

Poniżej znajduje się przykładowy nagłówek pliku:

Extension: jpg
Size: 10244
Checksum: 14514

4.17.2. Dane pliku

Dane pliku następują bezpośrednio za nagłówkiem. Są prostym strumieniem bajtów i nie są zakodowane.

4.17.3. Wyliczanie sumy kontrolnej

Suma kontrolna pliku jest wyliczana z użyciem rozszerzonego algorytmu XOR. Ma zawsze długość 16 bitów. Pierwsze 8 bitów reprezentuje wszystkie bajty pliku zXORowane razem. Drugie 8 bitów reprezentuje wszystkie zanegowane bajty pliku zXORowane razem. Negowanie jest konieczne do wykrycia zagubienia bajtów o wartości 0.

Poniżej znajduje się przykładowa funkcja wyliczająca sumę kontrolną (język C):

int calculate_checksum(const char* data, int size)
{
	char checksum_1 = 0;
	char checksum_2 = 0;
	for (int i = 0; i < size; i++)
	{
	checksum_1 ^= data[i];
	checksum_2 ^= (~data[i]);
	}
	return ((unsigned char)checksum_1 << 8) + (unsigned char)checksum_2;
}

4.18. Raportowanie i kontrola postępów operacji

Niektóre polecenia takie jak "Recognize page" lub "Export document as" rozpoczynają proces, który może być dość czasochłonny. Aby zagwarantować możliwość implementacji przyjaznych dla użytkownika aplikacji klienckich, protokół daje możliwość raportowania postępów tego rodzaju operacji oraz anulowania ich na żądanie.

4.18.1. Raportowanie postępów w procentach

OCR Server raportuje postęp czasochłonnych operacji w procentach. Wartość procentowa jest wartością całkowitą z przedziału 0..100. Każda z wartości może być raportowana więcej niż raz.

< Progress: 0
> Continue
< Progress: 0
> Continue
< Progress: 25
> Continue
< Progress: 50
> Continue

Funkcja ta jest często wykorzystywana do implementacji paska postępu w aplikacji klienckiej.

4.18.2. Raportowanie bieżacej strony

Podczas czasochłonnych wielostronicowych operacji OCR Server raportuje numer bieżącej strony. Numer strony jest liczbą całkowitą większą lub równą 0. Każda z wartości może być raportowana tylko jeden raz.

< Page: 0
> Continue
< Page: 1
> Continue
< Page: 2
> Continue

Funkcja ta jest często wykorzystywana w celu pokazania postępu operacji w aplikacji klienckiej.

4.18.3. Raportowanie bieżacego regionu obrazu

Podczas czasochłonnych wieloregionowych operacji OCR Server raportuje współrzędne bieżącego regionu. Współrzędne bieżącego regionu składają się z czterech (lewy, górny, prawy, dolny róg) wartości całkowitych rozdzielonych spacjami. Jednostką wartości jest piksel.

< Progress: 19
> Continue
< Rect: 2376 134 2526 222
> Continue

Funkcja ta jest często wykorzystywana do oznaczenia aktualnie przetwarzanego regionu na podglądzie dokumentu w aplikacji klienckiej.

4.18.4. Porady dotyczące rozpoznawania

OCR Server raportuje ważne wskazówki, które mogą poprawić jakość rozpoznawania. Tego typu wiadomości powinny zostać przedstawione użytkownikowi w aplikacji klienckiej.

< Progress: 19
> Continue
< Tip: Increase resolution to improve recognition accuracy of small text.
> Continue
< Progress: 19
> Continue

4.18.5. Kontynuowanie lub anulowanie procesu

Po wysłaniu informacji o postępie lub wskazówki dotyczącej rozpoznawania, OCR Server czeka aż aplikacja kliencka wyśle polecenie "Continue". Polecenie to potwierdza, że interfejs użytkownika został zaktualizowany, użytkownik nie przerwał operacji i proces rozpoznawania może być kontynuowany.

Zamiast potwierdzenia, do OCR Servera może być wysłane polecenie "Cancel". Polecenie to prosi serwer o przerwanie bieżacej operacji.

< Progress: 0
> Continue
< Progress: 1
> Cancel
< Error: The operation was canceled.
< Send a command now.

Funkcja ta jest często wykorzystywana do implementacji przycisku "Anuluj" w aplikacji klienckiej.

4.18.6. Reportowane o zakończeniu procesu

Po pomyślnym zakończeniu procesu OCR Server wysyła wiadomość "Done.".

< Progress: 99
> Continue
< Progress: 100
> Continue
< Done.
< Send a command now.

4.19. Reportowanie błędów

Istnieją dwa rodzaje błędów, o których wystąpieniu może powiadomić OCR Server. Standardowe błędy dotyczą jedynie aktualnie wykonywanej operacji i po wysłaniu odpowiedniej informacji serwer jest gotowy do wykonywania innych poleceń. Po wystąpieniu błędu krytycznego serwer przerywa połączenie i kończy działanie.

OCR Server sygnalizuje standardowe błędy wysyłając wiadomość rozpoczynającą się od wyrażenia "Error:". Błędy krytyczne sygnalizowane są wiadomością rozpoczynającą się od wyrażenia "Fatal error:".

< Send a command now.
> Set recognition language to xx
< Error: One or more arguments are invalid