...
Aby dodać Barcode Reader do systemu należy dodać poniższą zależność do systemu:
| Code Block | ||
|---|---|---|
| ||
<dependency> <groupId>com.suncode.barcode</groupId> <artifactId>barcode-reader</artifactId> <version>2.0.5</version> </dependency> |
...
| Info |
|---|
W wersji 2.0.0 kody kreskowe rozpoznawane są przy użyciu biblioteki ZXing (Zebra Crossing) w wersji 2.2. |
Poprawa rozpoznawania kodów o niskiej jakości (od wersji 2.0.7)
W przypadku, gdy skany z kodami kreskowymi są niskiej jakości i standardowy mechanizm ma problemy z ich rozpoznawaniem można w pliku konfiguracyjnym zdefiniować filtry jakie mają być użyte do poprawy jakości kodów zanim zostaną one rozpoznane. Rozpoznawanie przy pomocy filtrów może być stopniowe, czyli program nakłada pierwszy zestaw filtrów, próbuje rozpoznać kod i jeżeli nie rozpozna to w kolejnym kroku stosuje kolejny zestaw zdefiniowanych filtrów i znowu próbuje odczytać kod.
Dostępne są następujące filtry:
- MEDIAN - filtr medianowy, przetwarza piksel na podstawie jego sąsiadów. Ma zastosowanie np.: dla kodów, które są "podziurawione", czyli czarne paski posiadają w środku białe piksele. Jest on nakładany tylko na obrazy czarno-białe i w odcieniach szarości. Dla obrazów kolorowych nie zostanie on nałożony, nawet mimo tego, że zostanie zdefiniowany w konfiguracji.
- AUTOTHRESHOLD - filtr, który automatycznie wyznacza granicę dla danego obrazu na podstawie której określa jaki odcień danego piksela ma zostać zamieniony na kolor czarny, a jaki na kolor biały. Filtr ten nie jest wykorzystywany dla stron, które już został zeskanowane w czarno-bieli.
Konfiguracja filtrów odbywa się bezpośrednio w gałęzi configuration i może wyglądać następująco:
| Code Block | ||
|---|---|---|
| ||
//Zostanie wykonana tylko jedna próba odczytania kodów z zastosowaniem filtru medianowego.
<filters>
<step>
<filter type="median" />
</step>
</filters> |
| Code Block | ||
|---|---|---|
| ||
//Zostanie wykonana tylko jedna próba odczytania kodów z zastosowaniem jednocześnie filtru medianowego i autothersholdu.
<filters>
<step>
<filter type="median" />
<filter type="autothreshold" />
</step>
</filters> |
| Code Block | ||
|---|---|---|
| ||
//Zostaną wykonane 3 kroki odczytania kodu.
//Krok 1: Bez zastosowania żadnych filtrów.
//Krok 2: Z zastosowaniem tylko filtra medianowego. Ten krok wykona się tylko w przypadku, gdy w kroku 1 nie zostanie znaleziony żaden kod pasujący do wzorca.
//Krok 3: Z zastosowaniem tylko filtra autothreshold. Ten krok wykona się tylko w przypadku, gdy w kroku 1 i kroku 2 nie zostanie znaleziony żaden kod pasujący do wzorca.
<filters>
<step></step>
<step>
<filter type="median" />
</step>
<step>
<filter type="autothreshold" />
</step>
</filters> |
| Note |
|---|
Należy pamiętać, że korzystanie z filtrów wydłuża czas przetwarzania pliku. Szczególnie będzie to widoczne, jeżeli będzie zdefiniowanych kilka kroków, a dokument posiada wiele stron bez żadnych kodów kreskowych. Wtedy dla każdej takiej strony będą musiały być zastosowane wszystkie kroki. W większości przypadków definiowanie filtrów nie będzie w ogóle konieczne. Szczególnie, gdy dokumenty są skanowane w czarno-bieli i mają dobrą jakość. |
Anchor unit unit
Jednostka przetwarzania
...
| Info |
|---|
Jeżeli wiadomo, że na pojedynczej stronie dokumentu występuje tylko jeden kod danego typu to zalecana wartością dla atrybutu multiple jest wartość false. Dzięki temu kody zostaną znalezione szybciej. |
Atrybuty elementu barcode
...
| Nazwa | Wymagany | Wartość domyślna | Opis |
|---|---|---|---|
| scale | Parametr określa współczynnik zmiany rozmiaru pliku (jego wysokości i szerokości). | ||
| compression | 0.75 | Parametr określa poziom kompresji podczas generowania nowego pliku. Im wyższa wartość, tym lepsza jakość, ale też większy rozmiar pliku. Wartości mogą być z zakresu 0.1 - 1.0. | |
| method | balanced | Parametr określa metodę skalowania obrazu. Metody dające lepsze wyniki są wolniejsze. Możliwe wartości to: auto, speed, balanced, quality, ultra. |
| Anchor | ||||
|---|---|---|---|---|
|
...
| Code Block | ||
|---|---|---|
| ||
<actions>
<success>
<move>
<destination>
<filename>${filename}</filename>
<directory path="D:/success"/>
</destination>
</move>
</success>
<error>
<copy>
<destination>
<filename>${filename}</filename>
<directory path="D:/error"/>
</destination>
</copy>
</error>
</actions> |
