Barcodes

webPDF unterstützt die Erkennung und Erstellung von Barcodes (Webservice "Barcode") in verschiedenen gängigen Barcode-Formaten.

 

Über die Parameter "<add>" (Erstellung) und "<detect>" (Erkennung) wird für den Webservice "Barcode" der Modus festgelegt. Über diese Parameter kann die Erstellung bzw. Erkennung beeinflusst werden.

 

Erkennungsmodus

 

Im Erkennungsmodus sucht der Webservice sämtliche gewählten Barcodeformate im gewählten Bereich des PDF-Dokuments. Abhängig von der gewählten Option kann der Webservice diese Ergebnisse in Form eines JSON- oder XML-Dokuments strukturieren.

 

tipp

Für die meisten Barcodeformate ist dies zwar nicht zwingend nötig, aber die benötigte Analysezeit kann grundsätzlich deutlich reduziert werden, wenn die Zahl der untersuchten Seiten und der untersuchte Bildbereich auf diesen Seiten eingeschränkt wird.

 

hint

Sollten sich mehrere Barcodes des gleichen Formats auf derselben Seite befinden, so ist es absolut sinnvoll, den untersuchten Bildbereich grundsätzlich einzuschränken, da ansonsten die Detektion fehlschlagen kann. Es empfiehlt sich in diesem Fall, für jeden Barcode einen eigenen Bildbereich auszuwählen und sie separat zu erfassen.

 

hint

Die Ergebnisliste des Erkennungsmodus enthält niemals Duplikate für eine untersuchte Seite. Wird ein Barcode mit dem gleichen Inhalt und Format auf einer Seite mehrmals gefunden, so wird er nur einmal gelistet werden.

 

Erstellungsmodus

 

Im Erstellungsmodus erzeugt der Webservice einen Barcode im gewählten Format und platziert diesen auf beliebig vielen Seiten des übergebenen PDF-Dokuments. Es wird immer ein PDF-Dokument als Ausgangsdokument erwartet.

 

Unterstützte Formate

 

Bei der Erstellung und Erkennung werden die folgenden Barcode-Formate unterstützt.

 

Eindimensionale Barcodes

Eindimensionale Barcodes sind in der Regel Strichcodes, die Werte durch eine Abfolge von Strichen unterschiedlicher Stärke codieren. Für solche Barcode-Formate ist nur diese Abfolge relevant und nicht die Höhe der Striche, weshalb sie auch als eindimensionale Barcodes (1D-Barcodes) bezeichnet werden. 1D-Barcodes stellen damit in der Regel keine oder wenige Anforderungen an die Höhe des Barcodes, während ihre Breite hingegen stark reglementiert ist, da die Abfolge von leeren Bildbereichen und Strichen und vor allem deren Breitenverhältnisse exakt den Vorgaben entsprechen müssen.

 

Codabar

A-D, 0-9,

6 Sonderzeichen

Kapazität:

16 Ziffern +4 optionale Zeichen als Start- und Endzeichen

Codierter Wert: A1234567890A

codabar

 

Der Codabar Strichcode wurde ursprünglich für den Einzelhandel entwickelt, spielt dort allerdings nur noch eine untergeordnete Rolle. Aktuell wird Codabar vor allem in Bibliotheken, Fotolabors, Blutbanken und weiteren ausgewählten Bereichen verwendet. Die Start- und Endzeichen geben in der Regel Aufschluss darüber, welchem Zweck die codierte Information dient. Aufgrund der typischerweise großen Abstände und Strichstärken ist Codabar auch bei niedrigen Auflösungen und Ausdrucken mit schlechter Qualität noch leicht lesbar, verliert diesen Vorteil allerdings durch seine niedrige Informationskapazität bei hohem Platzbedarf.

 

Code 39

Zeichensatz:

A-Z, 0-9,

5 Sonderzeichen

Kapazität:

Variabel

Codierter Wert: *WEBPDF$*

code 39

 

Der Barcode Code 3 of 9 verdankt seinen Namen dem Umstand, dass drei der zur Codierung eines Codeworts genutzten neun Elemente (Striche) breiter sind als die anderen. Code39 ermöglicht optional die Nutzung eines Prüfzeichens, gilt aber im Allgemeinen allein schon aufgrund seiner Codewortstruktur als selbst korrigierend. Er ist dank seines großen Zeichenvorrats, seiner variablen Länge und leichten Erstellbarkeit in vielen Bereichen wie Elektronik, Chemie, Lagerhaltung, Transport etc. im breiten Einsatz. Start- und Endzeichen sind immer das Asterisk-Symbol, werden aber daher auch gerne bei der Eingabe/Ausgabe eines Code 39 weggelassen und im Hintergrund automatisch gehandhabt. Das Format verfügt allerdings über eine sehr geringe Informationsdichte pro verwendeter Platzeinheit und mittlerweile über einen geringeren Zeichensatz als zum Beispiel Code 128.

 

Code 128

Zeichensatz:

128A:

A-Z, 0-9,

ASCII Sonderzeichen,

ASCII Kontrollcodes,

FNC 1-4

 

128B:

A-Z, a-z, 0-9,

ASCII Sonderzeichen,

FNC 1-4

 

128C:

00-99

 

Kapazität:

Variabel

Codierter Wert: webPDF

code 128

Code 128 verdankt seinen Namen dem Umstand, dass er alle 128 ASCII-Zeichen unterstützt. Die Besonderheit von Code 128 ist augenscheinlich zunächst einmal die Möglichkeit, im selben Barcode zwischen 3 verschiedenen Zeichensätzen zu wechseln; dies ermöglicht eine größere Informationsdichte und vergrößert den Zeichenvorrat noch weiter. Die drei Zeichensätze stellen keine eigenständigen Formate dar, da ein Code128 Barcode in der Regel zwischen allen drei Zeichensätzen beliebig wechselt, um den Inhalt möglichst kompakt abbilden zu können. Code 128 bietet darüber hinaus 4 Funktionszeichen an, von denen beispielsweise FNC4 den Zeichensatz nochmals um alle LATIN-1 (ISO-8859-1) Zeichen erweitert. Das Format ist weltweit vorallem in Verpackung und Versand sehr gebräuchlich. Er verfügt über eigene spezialisierte Start- und Stop-Zeichen und die Möglichkeit, eine Prüfsumme zu erstellen.

 

EAN 13

Zeichensatz:

0-9

Kapazität:

13 Ziffern

Codierter Wert: 5901234123457

ean 13

 

Das Format "European Article Number 13" ist ein weit verbreitetes Barcode-Format zur Produktmarkierung im Einzelhandel - die Zahl 13 bezieht sich auf die maximale Kapazität von 13 Ziffern. Der Barcode ist vor allem deshalb interessant, weil er über eine feste Länge und einen strikt standardisierten Inhalt verfügt. Ein EAN 13 Barcode besteht aus einem GS1 Länderpräfix, der Unternehmensnummer, der eigentlichen Artikelnummer und einer Prüfziffer. Insgesamt ist das Format damit ein sehr leicht und schnell lesbarer Code, der auch eine problemlose manuelle Eingabe ermöglicht. Der Ländercode kann zum Beispiel in Supermärkten auch durch einen internen Code ersetzt werden, der die Verwendung des Produkts spezifiziert.

 

EAN 8

Zeichensatz:

0-9

Kapazität:

8 Ziffern

Codierter Wert: 65833254

ean 8

 

Das Format "European Article Number 8" ist eine kürzere Form des EAN 13 Barcodes - die Zahl 8 bezieht sich auf die maximale Kapazität von 8 Ziffern. Der Barcode ist vorallem deshalb interessant, weil er eine feste und vorallem vergleichsweise sehr kurze Länge besitzt. Ein EAN-8 Barcode ist vorallem zur Produktmarkierung all jener Produkte gedacht, für die ein EAN 13 Barcode zu lang wäre. Ein EAN 8 Barcode besteht aus einem GS1 Länderpräfix, der eigentlichen Artikelnummer und einer Prüfziffer. Insgesamt ist das Format damit ein sehr leicht und schnell lesbarer Code, der auch eine problemlose manuelle Eingabe ermöglicht.

 

UPC A

Zeichensatz:

0-9

Kapazität:

12 Ziffern

Codierter Wert: 03600029145

upc a

 

Der Universal Product Code ist ähnlich wie die EAN-Barcodes ein Format zur Produktmarkierung im Einzelhandel, die kompatibel zu EAN-Codes sind. UPC ist das einzige in den USA und Kanada akzeptierte Format zur Produktmarkierung und unterscheidet sich von EAN 13 vorallem durch die vorangestellte Verwendungsziffer:

0 - normaler UPC-Code

2 - Produkte, die nach Gewicht berechnet werden

3 - NDC (National Drug Code) und HRI (Health Related Items) Codes - also medizinische Produkte

4 - Uneingeschränkter UPC-Code

5 - Gutschein

6 - normaler UPC-Code

7 - normaler UPC-Codex

Die Ziffern 1,8 und 9 sind für spätere Zuweisungen reserviert. Die zweite bis sechste Ziffer geben den Hersteller des Produktes an, darauf folgt die Artikelnummer und schließlich die Prüfziffer. UPC Codes werden anders als EAN-Barcodes weltweit akzeptiert und daher vorallem von international agierenden Unternehmen bevorzugt verwendet. Das Format ist leicht und schnell lesbar und ermöglicht eine problemlose manuelle Eingabe.

 

ITF

0-9

14 Ziffern

Codierter Wert: 98765432109213

itf

 

Ähnlich wie UPC- und EAN-Barcodes ist Interleaved 2 of 5 (genauer ITF-14) ein Barcodeformat, das im Einzelhandel genutzt wird. ITF-14 wird dabei aber vorallem zur Markierung von Versandverpackungen und Paletten genutzt. Die erste Ziffer gibt hierbei die Packungsart an, die nächsten 12 Ziffern enthalten die Artikelnummer und die letzte Ziffer ist die Prüfziffer. Das Format erhält seinen Namen durch die Art, in der Informationen abgelegt werden - zwei Ziffern werden je paarweise abgebildet, wobei die erste Ziffer durch fünf Striche und die zweite durch die fünf hinter diesen Strichen liegenden Lücken dargestellt werden; dadurch wird eine relativ hohe Informationsdichte erreicht.

Das Ursprungsformat ITF verfügte über keinerlei Zeichenlimitierungen, ist allerdings nicht mehr wirklich gebräuchlich.

 

Zweidimensionale Barcodes

Zweidimensionale Barcodes codieren ihren Wert in einer zweidimensionalen Ebene in Form schwarzer und weißer Pixel. Sie verfügen in der Regel über eine wesentlich höhere Informationskapazität als 1D-Barcodes, sind aber aufgrund der höheren Komplexität auch teils wesentlich anfälliger für Bildfehler, woraus die Notwendigkeit eines Verfahrens zur Fehlerkorrektur resultiert. Bei 2D-Barcodes ist sowohl deren Höhe als auch Breite stark reglementiert, denn potentiell enthält jeder Bildpunkt des Codes wichtige Informationen. Sie stellen somit sehr häufig Anforderungen an die wählbaren Höhen und Breiten, die Seitenverhältnisse oder allgemein die geometrische Form des Barcodes.

 

DataMatrix

Zeichensatz:

ASCII(1-255)

Kapazität:

Variabel

Codierter Wert: webPDF

data matrix

 

DataMatrix codiert die übergebenen Inhalte im Datenbereich durch gefüllte und leere Quadrate und verfügt dabei (je nach gewähltem Typus) entweder über eine quadratische oder rechteckige Grundform. Die DataMatrix verfügt über einen durchgezogenen Rand am linken und unteren Rand und über segmentierte Linien am oberen und rechten Rand - über diesen Rand ist einerseits der Barcode lokalisierbar und andererseits ist seine Rotation so feststellbar. Ein DataMatrix-Barcode verfügt über eine integrierte Fehlerkorrektur nach dem Reed-Solomon-Algorithmus, womit Teile der Matrix auch nach starken Beschädigungen des Codes regeneriert werden können.

 

hint

Bei der Erkennung von DataMatrix-Barcodes mittels des Webservices ist dringend darauf zu achten, dass der untersuchte Bildbereich auf den DataMatrix-Code beschränkt wird, sodass sich der DataMatrix-Code möglichst im Zentrum des Bereichs befindet. Störquellen wie Schrift oder andere Bilder sollten möglichst vermieden werden. Desweiteren erfordert ein DataMatrix-Code rundherum dringend einen "Ruhebereich" (also Rahmen), dessen Breite mindestens der Seitenlänge eines Codierungszeichens entsprechen soll.

Beispiel: Entspricht ein DataMatrix-Punkt also zum Beispiel 2 mal 2 Pixeln, so muss der Ruhebereich mindestens 2 Pixel breit sein.

 

QR Code

Zeichensatz:

ASCII(1-255)

Kapazität:

Variabel

Codierter Wert: webPDF

qr code

 

Quick Response Codes codieren Informationen ähnlich wie eine DataMatrix durch gefüllte und leere Quadrate in einer quadratischen Grundform. QR-Codes sind dahingehend optimiert, möglichst schnell maschinell erkannt und gelesen werden zu können. Gerade im Mobiltelefon-Umfeld sind QR-Codes sehr beliebt, um Informationen (wie beispielsweise eine Webadresse) in einem einfach abgreifbaren Format zu hinterlegen. (Mobile Tagging). QR-Codes verfügen in der Regel über drei Positionsmarker, die dem Lesegerät die Erkennung des Barcodes und dessen Orientierung vereinfachen. Der maximal denkbare Informationsgehalt eines QR-Codes beträgt 2,956 kB, allerdings hängt diese Kapazität auch vom gewählten Fehlerkorrekturlevel ab. Das Fehlerkorrekturlevel gibt an, wie viel Prozent der codierten Daten mittels des Reed-Solomon-Algorithmus abgesichert werden sollen (Low 7%, Medium 15%, Quartile 25%, High 30%). Entsprechend diesem Wert sinkt allerdings auch die verbleibende Kapazität des Codes - je höher das Level gewählt wird, desto stärkeren Beschädigungen hält allerdings der Barcode stand, bevor er unlesbar wird.

 

Aztec

Zeichensatz:

ASCII(0-127), Extended ASCII

Kapazität:

Variabel

Codierter Wert: webPDF

aztec

 

Aztec-Codes codieren Information, indem sie leere und gefüllte Quadrate konzentrisch um ein quadratisches Kernelement herum anordnen. Das Kernelement ermöglicht die Erkennung des Barcodes und gibt zudem die Orientierung des Barcodes an. Die entstehende Struktur erinnert an eine Stufenpyramide, daher der Name des Formats. Jede hinzugefügte Ebene kann mit steigender Seitenlänge mehr Daten abbilden und besteht aus zwei Ringen von Codierungszeichen. Ebenen werden vom Kern aus nach Bedarf außen angefügt, womit Aztec-Codes mit steigender Länge der codierten Nachricht immer mehr Fläche benötigen. Ein Aztec-Barcode verfügt über eine integrierte stufenlose, prozentuale Fehlerkorrektur nach dem Reed-Solomon-Algorithmus, womit Teile der Matrix auch nach starken Beschädigungen des Codes regeneriert werden können. Aztec-Codes werden bislang vorallem zur Beschriftung pharmazeutischer Produkte und auf Fahrkarten öffentlicher Verkehrsnetze eingesetzt.

 

hint

Bei der Erkennung von Aztec-Barcodes mittels des Webservices ist dringend darauf zu achten, dass der untersuchte Bildbereich auf den Aztec-Code beschränkt wird, sodass sich der Code möglichst im Zentrum des Bereichs befindet.

 

PDF 417

Zeichensatz:

ASCII

Kapazität:

Variabel

Codierter Wert: webPDF

PDF 417

 

Das Barcode-Format "Portable Data Format 417" dient in erster Linie der Codierung größerer Datenmengen. Jedes Muster des Codes besteht hierbei aus 4 Stäben und 4 Leerflächen und jedes dieser Muster ist 17 Codierungseinheiten lang, daher die Bezeichnung 417. PDF417-Barcodes können aus 3 bis 90 Reihen bestehen, von denen jede einzelne im Grunde einen 1D-Barcode darstellt; jede dieser Zeilen enthält Informationen bezüglich ihres Inhaltes, ihrer Zeilennummer und ähnliches. Aufgrund dieser Eigenständigkeit der einzelnen Zeilen können PDF417-Barcodes problemlos auch von den meisten linearen Scannern gelesen werden, was sie deutlich von allen anderen 2D-Barcodes abhebt, die eine komplexere Bilderkennung benötigen. PDF417-Barcodes realisieren eine interne 8-stufige Reed-Solomon-Fehlerkorrektur und sind somit je nach Stufe resistenter gegen Beschädigungen des Codes. PDF 417 ermöglicht zusätzlich die Qualifizierung des codierten Inhaltes - je nach Wahl wird für ein einzelnes Codewort eine bestimmte Anzahl an Codeworten benötigt - wodurch der Barcode verdichtet werden kann:

 

Text - ein Codewort bildet zwei Buchstaben ab.

Byte - je 5 Codewörter bilden 6 Bytes ab.

Numeric - bis zu 15 Codewörter bilden Zahlen mit einer Länge von bis zu 44 Ziffern ab.

 

Ausgabeformate

 

Der Barcode-Webservice erlaubt im Erkennungsmodus zwei verschiedene Ausgabeformate für das Dokument mit den gefundenen Barcodes. Das Ausgabeformat kann über die Option "outputFormat" bei den Parametern bestimmt werden.

 

tipp

Das Format des Dokuments wird über das Schema http://schema.webpdf.de/1.0/extraction/barcode.xsd beschrieben.

 

XML

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<barcodes xmlns="http://schema.webpdf.de/1.0/extraction/barcode">
  <barcode type="qrcode" page="61" errorCorrectionLevel="L">
      <rectangle coordinates="user" x="407.0" y="73.0" width="43.5" height="44.0"/>
      <rectangle coordinates="pdf" x="407.0" y="725.0" width="43.5" height="44.0"/>
      <plain>webPDF</plain>
  </barcode>
   ....
</barcodes>

 

Jedes in "<barcodes>" enthaltene "<barcode>"-Element repräsentiert einen erkannten Barcode; dessen Attribute "page" und "type" geben Seite und Format des Barcodes an. Darüber hinaus können Attribute zusätzlichen Metainformationen folgen, die abhängig vom Barcodeformat weitere Informationen über den Barcode enthalten können.

 

Das Element "<plain>" enthält den decodierten Wert des Barcodes, und die Elemente "<rectangle>" die Position des Barcodes in der Seite.

 

JSON

 

Die Struktur im JSON-Format entspricht den Inhalten der XML-Struktur.

 

{
"barcodes" : {
  "barcode" : [ {
    "rectangle" : [ {
      "x" : 407.0,
      "y" : 73.0,
      "width" : 43.5,
      "height" : 44.0,
      "coordinates" : "user"
     }, {
      "x" : 407.0,
      "y" : 725.0,
      "width" : 43.5,
      "height" : 44.0,
      "coordinates" : "pdf"
     } ],
    "plain" : "webPDF",
    "type" : "qrcode",
    "page" : 61,
    "errorCorrectionLevel" : "L"
   },.... ]
 }
}