Auch im Kleinunternehmen oder zu Hause ermöglichen Barcodes oft ein rationelleres Arbeiten. Mit den passenden Programmen und kostengünstiger Hardware erzeugen und lesen Sie die wichtigsten Codes problemlos.
Barcodes helfen, Waren- und Inventargegenstände rationell zu verwalten, indem sie Tipp- und Zählfehler vermeiden. Aber nicht nur für die Warenwirtschaft sind die kontrastreichen Balken und Quadrate interessant.
Strichcodes stellen Informationen eindimensional dar und kommen vor allem in der Logistik zum Einsatz. Teilweise enthalten sie Prüfziffern zum Erkennen von Lesefehlern. Zur Überprüfung oder Handeingabe gibt es meist eine Klartextausgabe unter oder neben der Strichcodezeile. Weitere Angaben zu einer Auswahl eindimensionaler Strichcodes zeigt die Tabelle “Wichtige Strichcodes”.
Wichtige Strichcodes
| Typ | Eigenschaften | Beispiel |
|---|---|---|
| EAN-13/GTIN-13 | 12 Ziffern plus Prüfziffer | Abbildung 1 |
| CODE-39 | variable Länge; Großbuchstaben, Ziffern, Sonderzeichen $%/+.- |
Abbildung 2 |
| CODE-128 | variable Länge; Klein- und Großbuchstaben, Ziffern, Sonderzeichen | Abbildung 3 |
CODE-39-Strichcodes
Das Zeichen “*” bildet bei CODE-39 das Start- und Stop-Zeichen. Die zulässigen Zeichen umfassen die Ziffern von 0 bis 9, die Großbuchstaben von A bis Z sowie einige Sonderzeichen. Beim Erstellen der CODE-39-Strichcodes sollten Sie bei der Eingabe stets die Großbuchstaben verwenden: Nicht alle Barcode-Anwendungen setzen die Kleinbuchstaben automatisch in große um.
EAN/GTIN-Strichcodes
Die weltweit gültige Artikel-Identnummer GTIN (“Global Trade Item Number”) wird hierzulande allgemein immer noch als EAN (“European Article Number”) bezeichnet. Die kostenpflichtige Vergabe der EAN/GTIN-Nummer für Handelsware liegt in den Händen der Organisation GS1 (“Global Standards One”, [1]). Der 13-stellige Strichcode weist eine feste Untergliederung auf (siehe Tabelle “EAN-13/GTIN-13-Strichcode”).
EAN-13/GTIN-13-Strichcode
| Stelle | Inhalt |
|---|---|
| 1 bis 3 | Global Location Number |
| 4 bis 12 | Basis- und Artikelnummer |
| 13 | Prüfziffer |
Die Global Location Number GLN [2] steht nicht zwingend für den Staat, in dem das Produkt für den Handel hergestellt wurde. Das erklärt auch, warum man im Einzelhandel Bananen mit “4” an der ersten Stelle bekommt, obwohl diese Früchte gar nicht in Deutschland wachsen. Informationen über Lieferant und Produkt erhalten Sie im Internet ([3],[4]).
Ein besonderer Bereich der GLN-Nummer reicht von 200 bis 299. Er dient internen Zwecken, ähnlich wie der Adressbereich privater IP-Netzen. Außerhalb der eigenen IT-Infrastruktur kann mit den damit gebildeten Artikelnummern niemand etwas anfangen. Dieser Nummernkreis kommt in der Praxis vor allem bei Verkaufswaagen für Fleisch, Käse und Gemüse zum Einsatz. Zusammen mit den offiziellen Artikelnummern werden die Verkäufe dann über das Warenwirtschaftssystem abgerechnet. Dieser Nummernbereich ist auch für den privaten Einsatz beim Verwalten von Sammlungen, der Zeitnahme bei Veranstaltungen oder auf Service-Laufzetteln gebräuchlich.
Zweidimensionale Codes
In zweidimensionalen Codes bringt man mehr Informationen unter als beim klassischen Strichcode. Solche 2D-Codes verwenden hauptsächlich Post- und Paketdienstleister sowie Verkehrsunternehmen. Diese Unternehmen verwenden entweder eigene 2D-Codes oder solche, die auf DataMatrix basieren.
Für die Angabe von URLs in Zeitschriftenartikeln, in der Werbung sowie auf Visitenkarten sieht man häufig 2D-Codes mit drei auffallenden kleinen Quadraten (Abbildung 4). Dabei handelt es sich um sogenannte QR-Codes. In ihnen lassen sich auch Shell-Befehle im 2D-Code unterbringen und im Support-Fall dem Kunden zumailen oder zufaxen. Der muss sich nur noch an der Konsole anmelden, eine Webcam anschließen und damit die Befehle einlesen. QR-Code-Bildchen können aber auch Links auf zweifelhafte Webseiten enthalten, deren Besuch Smartphone und Co. schadet.

Abbildung 4: So sieht ein QR-Code aus.
In einem QR-Code-Bild lassen sich theoretisch über 3000 Zeichen unterbringen. In der Praxis treten aber bei mehr als 300 Zeichen schon Lesefehler auf. Der Grund hierfür liegt meist in der Optik der Leseeinheit, die zu den Ecken hin eine Krümmung aufweist und daher die kleinen quadratischen Code-Teile nicht mehr sicher identifiziert.
Qualitätsfrage
Die Druckqualität von Strich- und 2D-Codes ist entscheidend für das fehlerfreie Einlesen – dazu gehört vor allem ein guter Kontrast. Die Strichcodefibel [5] empfiehlt maximal Pastellfarben für den Hintergrund. Reflektierende oder transparente Hintergründe verursachen beim Einlesen oft Probleme, wie man an jeder Supermarktkasse beobachten kann. Nadeldrucker eignen sich nur bedingt für den Code-Druck. Gute, sauber arbeitende Tintenstrahldrucker oder Laserdrucker bringen die Ausdrucke in der notwendigen Qualität auf das Papier.
Strichcodes mittels Schriften
Strichcodes lassen sich entweder über druckereigene Schriften oder mittels Truetype-Fonts innerhalb von Office-Anwendungen erzeugen. Sie installieren die entsprechenden TTF-Fonts [6] wie jede andere Schrift und rufen sie im Büropaket auf.
Eventuelle Start/Stop-Kennungen, wie das Sternchen beim CODE-39, müssen Sie selbst einfügen. Fehler ergeben sich oft aus den Eingriffen einer mitlaufenden Rechtschreibkorrektur oder versehentlich gesetzten Schriftattributen wie fett oder kursiv. Von diesen Fehlerquellen einmal abgesehen ist dieses Verfahren unkompliziert und eignet sich vor allem für das gelegentliche Erstellen von Barcodes. Eine TTF-Schrift für CODE-39 laden Sie kostenfrei unter [7] herunter.
Strichcodes in LaTeX
Für das Erzeugen von Strich- und 2D-Codes in LaTeX müssen Sie die Pakete pstricks und pst-barcode einbinden. Mit dieser Kombination funktioniert allerdings das Erstellen einer PDF-Datei mit PDFLaTeX nicht. Stattdessen setzen Sie nacheinander latex, dvips und ps2pdf14 ein. Ein LaTeX-Muster finden Sie in Listing 1.
Die im Beispiel beim CODE-128 erkennbaren Escape-Sequenzen sorgen dafür, dass Barcode-Lesegeräte den Code verarbeiten können. Genauere Ausführungen dazu finden Sie in der Dokumentation von pst-barcode [8].
Listing 1
\documentclass[10pt,a4paper]{article}
..........
\usepackage{pstricks}
\usepackage{pst-barcode}
..........
\begin{document}
Strichcodes \\
\\
\vspace{2cm}\\
\begin{pspicture}(3,1cm)
\psbarcode{4191841707909}{includetext}{ean13}
\end{pspicture}
\vspace{2cm}
\begin{pspicture}(2cm,2cm)
\psbarcode{QR-Code}{}{qrcode}
\end{pspicture}
\vspace{2cm} \\
\begin{pspicture}(2cm,2cm)
\psbarcode{CODE39}{includetext}{code39}
\end{pspicture}
\vspace{2cm} \\
\begin{pspicture}(2cm,1cm)
\psbarcode{^104^102Code 128^101}{includetext}{code128}
\end{pspicture}
\end{document}
Strichcodes mit Barcode
In den Repositories aller gängigen Distributionen finden sich das kleine Shell-Programm Barcode ([9],[10]). Es kennt die Option -e Code, mit der Sie angeben, wie das Tool die Eingabe kodieren soll. Mit -o Datei bestimmen Sie die Ausgabedatei. Ohne weitere Vorgaben liefert Barcode die Ausgabe im Postscript-Format. Das Beispiel in der ersten Zeile von Listing 2 zeigt die Erzeugung eines EAN-13-Codes.
Mit der Option -i Datei (Listing 2, zweite Zeile) liest Barcode aus einer Eingabedatei. Diese darf keine Leerzeilen enthalten, auch keinen Zeilenvorschub am Schluss. Andernfalls erzeugt Barcode zwar die Ausgabedatei, jedoch mit einer Leerseite am Ende und einer Fehlermeldung am Bildschirm.
Listing 2
$ barcode -b 4191841707909 -e "ean13" -o barcode.ps $ barcode -i barcode-eingabe.txt -e "ean13" -o barcode.ps
QR-Codes mit QRencode
QR-Codes erzeugen Sie mit dem Kommandozeilenprogramm QRencode [12], das eine Ausgabedatei im PNG-Format erstellt. QRencode kann nicht direkt mit einer Eingabedatei umgehen. Möchten Sie Zeilenumbrüche in der Information verwenden, müssen Sie daher stattdessen eine kleine Textdatei erstellen und diese anstelle von stdin mit der Eingabe-Umlenkung < übergeben.
Den Korrekturlevel definieren Sie mit -l Level. Die möglichen Levels sind L, M, Q und H, wobei der Parameter L (“low”) für den niedrigsten und H (“high”) für den höchstmöglichen Wert steht. Die Code-Version geben Sie mit -v Version an.
Das Beispiel in Listing 3 zeigt das Erzeugen eines QR-Codes und dessen Ausgabe mite -o Datei in eine Bilddatei.
Listing 3
$ qrencode -l L -v 1 -o qrbild.png < eingabe.txt
KBarcode4-light
In der grafischen Benutzeroberfläche KDE SC 4 erstellen Sie Strich- und 2D-Codes mit KBarcode4-light [11] bequem per Mausklick. Sie laden das Python-Programm von KDE-Apps.org herunter und entpacken das Archiv. Anschließend erstellen Sie für den bequemem Aufruf am besten ein Startskript, wie es Listing 4 zeigt.
Listing 4
#! /bin/sh python /Pfad/kbarcode4-light-0.2/src/kbarcode.py
Nach dem Aufruf erscheint die weitgehend selbsterklärende Programmoberfläche (Abbildung 5). Die fertigen Code-Bilder können Sie direkt drucken, speichern oder über die Zwischenablage einer anderen Verwendung zuführen.
Einlesen mit Lesegerät
Schon für unter 50 Euro erhalten Sie einen einfachen Barcode-Leser. Solche Geräte können allerdings keine 2D-Codes verarbeiten. Die neueren Leser nehmen via USB Kontakt mit dem Rechner auf, die älteren mittels PS/2-Anschluss, einige Modelle übermitteln ihre Daten stattdessen per Funk. Der Barcode-Leser wandelt den Strichcode in Schriftzeichen um, der Rechner behandelt die Ausgabe des Geräts wie eine Tastatureingabe.
Die Bedienung des in Abbildung 6 gezeigten Hand-Barcode-Scanners gestaltet sich unkompliziert: Sobald sie die Taste an der Unterseite drücken, ist der Scanner aktiv, was Sie an der roten Beleuchtung erkennen. Sie richten nun die Optik auf den Barcode. Erkennt das Gerät einen Strichcode und kann ihn entschlüsseln, quittiert es dies mit einem Piepton und schaltet die rote Beleuchtung wieder ab. Gleichzeitig erscheinen die eingelesenen Daten am Bildschirm.
Die Feinkonfiguration des gezeigten Scanners, eines Manhattan SD313B SmartPro CCD, erfolgt übrigens per Barcode. Im Begleitheft finden sich verschiedene Einstellungen als Barcode abgedruckt, die das Gerät innerhalb einer einfachen Programmierroutine einliest.
Zum Einlesen von 2D-Codes benötigen Sie einen Kamera-Scanner. Solche auch als Imager bezeichneten Geräte sind verhältnismäßig teuer in der Anschaffung: So kostet ein gängiges Modell, der DataLogic Barcode-Scanner 8530 2D Desk [13], beispielsweise beim Versandanbieter Conrad Electronic rund 470 Euro. Die Bedienung gleicht jener der eindimensional arbeitenden Barcode-Leser.
Einlesen via Webcam
Verlagert man die Arbeit der Dekodierung vom Scanner zum Rechner, so entfällt die Anschaffung eines “intelligenten” Imagers. Eine schlichte Webcam (Abbildung 7) für 9,95 Euro aus dem Elektronik-Laden genügt für diesen Zweck. Die Kamera muss lediglich einen Handfokus anstelle von Autofokus bieten und über eine LED-Beleuchtung sowie eine Klemmbefestigung verfügen. Sie verbinden die Webcam per USB mit dem Rechner, auf dem das Video4Linux-Paket installiert sein muss.
Zum Auswerten benötigen Sie das Programm Zbarcam. Es gehört zur Zbar-Suite [14], die alle gängigen Distributionen in ihren Repositories vorhalten. Das Scanprogramm wertet unter anderem EAN-8, EAN-13, CODE-128, CODE-39 und den QR-Code aus. Zbarcam verfügt über einen abschaltbaren Kontrollbildschirm, der beim Justieren der Optik hilft: Erscheint der Barcode mit grüner Farbe gefüllt oder QR-Code grün umrahmt, dann funktioniert das Einlesen.
Falls Sie die Webcam fest montieren, markieren Sie deren Zielbereich am besten mit farbigem Isolierband, was das Ausrichten der Gegenstände oder Papiere mit dem Barcode deutlich erleichtert. Im Idealfall kann man so später durchaus per Option auf den Kontrollbildschirm verzichten, besonders bei einer Einbindung in Shell-Skripte. Ein Muster für den eigenen “Skriptbaukasten” zeigt das Listing 5, das die Grundfunktionen von Zbarcam demonstriert.
Die wichtigsten Optionen von Zbarcam lauten --raw und --nodisplay. Mit --raw erhalten Sie nur die dekodierte Information ohne weitere Angabe, beispielsweise die Artikelnummer. Andernfalls gibt das Programm auch die Kodierungsangabe aus. Die Anzeige des Kontrollbildschirmes verhindern Sie mittels der Option --nodisplay. Ein Beispiel für den Ablauf des Shell-Skripts zeigt Abbildung 8.
Listing 5
#! /bin/sh
while true;
do
# Einlesen ohne Kontrollbildschirm, Ausgabe ohne Code-Typ
zbarcam --raw --nodisplay > barcode.txt &
# Einlesen mit Kontrollbildschirm, Ausgabe ohne Code-Typ
# zbarcam --raw > barcode.txt &
pid=$!
# Schlafen, bis Dateiinhalt vorliegt
while true ;
do
sleep 0.5
if [ -s barcode.txt ];
then
kill $pid
break
fi
done
beep
# Auslesen der Textdatei und belegen der Variablen
bwert=`cat barcode.txt`
echo "Eingelesen: "$bwert
echo -n "Weiter [ENTER]";read wn
done
Einlesen per Flachbettscanner
Das Auslesen von Strich- und 2D-Codes aus Bilddateien eignet sich beispielsweise für Prüfungsbögen oder Bestellscheine. So lässt sich damit zur Not sogar per Shell-Skript das Schriftgut zutreffend in eine SQL-Datenbank verbringen.
Das Programm Zbarimg gehört wie Zbarcam zur ZBar-Suite [14] und verfügt auch über ähnliche Optionen. Es kann in einem Durchgang mehrere verschiedene Codes erkennen, Sie können es aber auch auf das Auslesen eines einzigen Codes beschränken. Die Option --raw unterdrückt die Ausgabe des Code-Typs. Der Kontrollbildschirm müssen Sie hier explizit mit -D anfordern. Man kann das Programm. Die Statusmeldung mit der “Arbeitsleistung” von Zbarimg unterdrücken Sie mit dem Parameter -q (“quiet”).
Das Blatt mit den eigens erzeugten Muster-Codes wurde im Test mit 200 dpi eingescannt (Abbildung 9). Der erste Durchlauf erfolgt mit, der zweite ohne Ausgabe des Code-Typs und des Statusberichts.
Fazit
Der Umgang mit Barcodes bereitet unter Linux keinerlei Schwierigkeiten: Die dazu notwendige Software bringt so gut wie jede Distribution bereits im Paketfundus mit, sodass sie sich bequem über den Paketmanager installieren lässt. Für das Erfassen von Strichcodes genügt zudem preisgünstige Hardware. Damit steht dem Einsatz von Barcodes für eigene Zwecke eigentlich nichts im Weg.
Glossar
-
DataMatrix
-
Einer der bekanntesten 2D-Barcodes, als ISO/IEC 16022:2000 international normiert. Das in der Regel quadratische Code-Feld bietet Platz für 144×144 Symbolelemente.
Infos
[1] Global Standards One: http://www.gs1.org
[2] Global Location Number: http://de.wikipedia.org/wiki/EAN-Ländernummer
[3] Strichcode-Produktinfos: http://www.codecheck.info
[4] GTIN-Suche: http://www.gepir.de/v31_client/gtin.aspx?Lang=de-D
[5] Strichcode-Fibel: http://www.logitogo.com/html/strichcodefibel.html
[6] Barcode-Schriften: http://www.barcode-fonts.de/strichcode%20schriften.htm
[7] CODE-39-Schrift: http://www.logitogo.com
[8] Dokumentation zu pst-barcode: http://www.ctan.org/tex-archive/graphics/pstricks/contrib/pst-barcode/pst-barcode-doc.pdf
[9] GNU Barcode: http://www.gnu.org/software/barcode/
[10] Dokumentation zu Barcode: http://arcana.linux.it/software/barcode/
[11] KBarcode4-light: http://kde-apps.org/content/show.php/KBarcode4-light?content=128926
[12] QRencode: http://fukuchi.org/works/qrencode/
[13] 2D-Scanner von DataLogic: http://www.conrad.de/ce/de/product/914684/
[14] Zbar-Suite: http://zbar.sourceforge.net/











