Versions Compared

Key

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

...

Table Excerpt

...

name

...

plugininfo

Wstęp

plugin-info

Dokumentacja starszego PlusBarcodeReader: PlusBarcodeReader

Podstawowe informacje o projekcie

...

Code Block
languagehtml/xml
titleMaven
<dependency>
	<groupId>com.suncode.barcode</groupId>
	<artifactId>barcode-reader</artifactId>
	<version>2.0.9</version>
</dependency>

...

MaintenanceDepartmentDev Core
LicTypePłatna
ArtifactIdbarcode-reader
PriceEUR602
PricePLN2 500,00
TypWtyczkiWtyczka
PluginIdcom.suncode.plugin-barcode-reader
ShortDescriptionProgram służący do dzielenia plików na części na podstawie rozpoznanych kodów kreskowych.
 


Image Added


Table of Contents
outlinetrue

Wstęp

Info

Dokumentacja starszego PlusBarcodeReader: [STARSZA WERSJA] PlusBarcodeReader

Podstawowe pojęcia

  • dokument - dokument wejściowy w formacie PDF
  • zbiór stron - zbiór stron dokumentu (zawiera wydzielone strony z dokumentu wejściowego)
  • klasyfikacja dokumentu - proces przydzielania poszczególnych stron dokumentu do pasujących klas dokumentów
  • klasa dokumentów - klasa opisująca zasady przypisywania do niej poszczególnych stron dokumentu
  • zestaw klas dokumentów - zestaw klas dokumentów, określający kontekst (podzbiór dokumentu wraz z indeksami) w jakim strony przydzielane są do klas dokumentów w tym zestawie

Instalacja

Dodanie do systemu

 

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.9</version>
</dependency>

zainstalować wtyczkę, którą można pobrać z lokalizacji BarcodeReader. Od wersji 2.3.0 wtyczka wymaga zainstalowanej bazowej wtyczki Plus Barcode Reader Core.

Jeżeli Barcode Reader był już dodany w systemie za pomocą zależności, wtedy należy usunąć zależność z pom'a. Następnie usunąć barcode-reader.jar z bibliotek systemu i zainstalować wtyczkę.

Zadania zaplanowane utworzone dla wcześniejszej wersji Barcode Readera będą nadal działać.


Instalacja na Windows Server

Przetestowane na Windows Server 2012 R2

1) Zaktualizować system

2) Zainstalować Windows Server Essentials Media Pack  https://www.microsoft.com/en-us/download/details.aspx?id=40837

Żeby zainstalować Media Pack wymagana jest instalacja Windows Server Essentials Experience

3) Restart serwera

Uruchomienie przez zadanie zaplanowane

...

KlasaMetodaParametr
com.suncode.barcodereader.integration.BarcodeReaderTaskreadBarcodesconfigPath - ścieżka do pliku konfiguracyjnego

Dokładny opis zadania zaplanowanego dla wtyczki znajduje się tutaj.

Uruchomienie przez zadanie automatyczne

Dokładny opis zadania automatycznego dla wtyczki znajduje się tutaj.

Uruchomienie ręczne

Code Block
languagejava
// Plik z konfiguracja Barcode Readera
File configurationFile = new File( "sample/conf.xml" );
// Sparsowany plik konfiguracyjny
Configuration configuration = new ConfigurationParser( configurationFile ).parse();
// Utworzenie instancji Barcode Readera
BarcodeReader barcodeReader = new BarcodeReader( configuration );
// Wystartowanie Barcode Readera
barcodeReader.start();

...

Info

W wersji 2.0.0 kody kreskowe rozpoznawane są przy użyciu biblioteki ZXing (Zebra Crossing) w wersji 2.2.

Zalecany format plików pdf to PDF/A.

 Poprawa rozpoznawania kodów o niskiej jakości (od wersji 2.0.7)

...

  • 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.
    • W filtrze możemy podać przesunięcie w atrybucie value. Przesunięcie to działa na takiej zasadzie, że jest ono dodawane do automatycznej wartości thresholdu, która została określona dla danej strony.
  • THRESHOLD - filtr, który zamienia dany piksel na kolor czarny lub biały w zależności od podanej wartości.
    • W filtrze musimy podać wartość thresholdu w atrybucie value.

Konfiguracja filtrów odbywa się bezpośrednio w węźle configuration i może wyglądać następująco:

Code Block
languagexml
<!-- Zostanie wykonana tylko jedna próba odczytania kodów z zastosowaniem filtru medianowegothreshold o wartości 130. -->
<filters>
	<step>
		<filter type="medianthreshold" value="130" />
	</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>

 

Użycie filtrów z ustawioną wartością threshold:

No Format
    <filters>
        <step>
            <filter type="threshold" value="130" />
        </step>
        <step>
            <filter type="median" />
            <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ść.

...

Code Block
languagexml
linenumberstrue
<barcodes mutliple="false">
	<barcode name="kod" type="CODE_128" pattern="(^KOD.*)" />
</barcodes>
<classify>
	<class-set>
set name="Zestaw klas">
		<start>
			<firstpage modifier="+1" />
		</start>
		<end>
			<lastpage modifier="-1" />
		</end>
		<indexes>
			<index name="kodIndex" type="barcode">kod</index>
		</indexes>
		<class name="Faktury">
			...
			<indexes>
				<index name="kodIndex" type="import">kodIndex</index>
			</indexes>
			<destination>
				<filename>${basename}_${kodIndex}.pdf</filename>
				<directory path="D:/Faktury" />
			</destination>
			...
		</class>
		<class name="Załączniki">
			...
		</class>
	</class-set>
</classify>

...

Code Block
languagexml
linenumberstrue
<barcodes multiple="false">
	<barcode name="faktura" type="CODE_128" pattern="(.+)" />
</barcodes>
<classify>
	<class name="Faktury">
		<start>
			<barcode>Faktury</barcode>
		</start>
		<end>
			<barcode>Faktury</barcode>
			<lastpage/>
		</end>
		<indexes>
			<index name="Index1" type="barcode">Faktury</index>
		</indexes>
		<destination>
			<filename>${Index1}.pdf</filename>
			<directory path="D:/Faktury" />
		</destination>
	</class>
	<class name="Niesklasyfikowane">
		<start>
			<unclassified />	
		</start>
		<end>
			<classified />
			<lastpage/>
		</end>
		<indexes>
		</indexes>
		<destination>
			<filename>BRAK_KODU.pdf</filename>
			<directory path="D:/Niesklasyfikowane" />
		</destination>
	</class>
</classify>

...

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>

Wymagane minimalne wersje systemu

System 4.1System 4.2
Wersja wtyczkiWersja systemuWersja wtyczkiWersja systemu
4.0.194.1.114.0.194.1.11