Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Aby dodać Barcode Reader do systemu należy dodać poniższą zależność do systemu:

 

Code Block
languagexml
<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
languagexml
//Zostanie wykonana tylko jedna próba odczytania kodów z zastosowaniem filtru medianowego.
<filters>
	<step>
		<filter type="median" />
	</step>
</filters>
Code Block
languagexml
//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
languagexml
//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

...

NazwaWymaganyWartość domyślnaOpis
scale(tick) Parametr określa współczynnik zmiany rozmiaru pliku (jego wysokości i szerokości).
compression(error)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(error)balancedParametr określa metodę skalowania obrazu. Metody dające lepsze wyniki są wolniejsze. Możliwe wartości to: auto, speed, balanced, quality, ultra.

 


Anchor
documentclassset
documentclassset

...

Code Block
languagexml
<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>