# Strichcode

Als Strichcode, Balkencode, Streifencode oder Barcode (von englisch bar ‚Balken‘) wird eine optoelektronisch computerlesbare Schrift bezeichnet, die aus verschieden breiten, parallelen Strichen und Lücken besteht. Der Begriff Code steht hierbei für Abbildung von Daten in binären Symbolen. Die Daten in einem Strichcode werden mit optischen Lesegeräten, wie z. B. Barcodelesegeräten (Scanner) oder Kameras, maschinell eingelesen und elektronisch weiterverarbeitet.

## Geschichte

Norman Joseph Woodland und Bernard Silver führten 1949 die ersten Versuche mit der Barcode-Technologie durch, das Patent hierfür wurde am 7. Oktober 1952 erteilt. In der Schweiz gab es um 1968 Versuche des Detailhandelsunternehmens Migros und des Unternehmens Zellweger, Artikel elektronisch zu lesen, was jedoch wieder eingestellt wurde. Zuvor hatte bereits Heinrich Weiss für seine Druckerzeugnisse den Strichcode eingeführt. Durchgesetzt hat sich der Strichcode unter anderem durch den Druck, den die US-amerikanische Supermarktkette Walmart in den 1970er Jahren auf die Produzenten ausübte.
1973 wurde der Universal Product Code (UPC) in Nordamerika eingeführt.
Am 26. Juni 1974 wurde in einer Filiale der US-amerikanischen Supermarktkette Marsh in Troy (Ohio) das erste mit einem Strichcode markierte Produkt, eine Zehnerpackung Juicy Fruit (Kaugummi) des Herstellers Wrigley, von einer Scannerkasse des Unternehmens Datalogic (ehemals PSC / Spectra Physics) erfasst und verkauft.
1976 erfolgte dann die Einführung des EAN-Code in Europa.
1977 führte das Einzelhandelsunternehmen Carl Doderer KG (1987 von der Schwarz-Gruppe übernommen) als erstes deutsches Unternehmen Scannerkassen in einem ihrer Augsburger Verbrauchermärkte ein. Der Wuppertaler Gewürzhändler Wichartz ließ als erstes deutsches Unternehmen am 1. Juli 1977 ein Produkt mit einem Strichcode bedrucken.
In Österreich war es die Supermarktkette Billa, heute Teil der Rewe Group, die als erste 1979 zwei Filialen in Wien mit Scannern ausrüstete und versuchte, den EAN-Code, der auch unter den Lieferanten nicht sehr verbreitet war, zu benutzen.
Zuerst wurden die eigentlichen Barcodes verwendet, in denen der Code nur in einer Achse aufgetragen, also eindimensional (1D-Codes) ist. Seit Ende der 1980er Jahre werden auch zweidimensionale Codes (2D-Codes) verwendet, in denen der Code in zwei Achsen oder Dimensionen aufgetragen wird. Diese Codes können aus gestapelten 1D-Codes bestehen (stacked), in Zeilen angeordnet oder als echter Flächencode (regelmäßige Matrix oder Matrix mit versetzten Zeilen aus Punktmustern) aufgebaut sein. Bei 3D-Codes stellt beispielsweise der Farbton, die Farbsättigung oder die Farbhelligkeit die dritte Dimension dar. 2007 haben Forscher der Bauhaus-Universität Weimar 4D-Codes entwickelt, bei denen die vierte Dimension die Zeit ist, d. h., die Codes sind animiert.

## Allgemeines

Die verschiedenen Typen von Barcodes wurden für verschiedene Aufgaben entwickelt, abhängig von den Benutzergruppen und den jeweiligen Herstellungsmöglichkeiten. Je nach Anwendung werden die Strichcodes mit konventionellen Druckverfahren wie Offset, Flexo- oder Tiefdruck oder mit Laser-, Thermodirekt-, Thermotransfer-, Tintenstrahldruck u. a. hergestellt. Nadel-Matrixdrucker sind weniger geeignet, weil deren Ausdrucke aufgrund der niedrigen Qualität von den Scannern oft nicht gelesen werden können.
Unabhängig von der Form der einzelnen Bitmuster wird die Gruppe der deterministischen ortsauflösenden Codes weiter als Strichcodes oder Barcodes bezeichnet. Es gibt auch pseudo-stochastische (scheinbar zufällige) und unregelmäßige Strichcodes, wie beispielsweise die Fingerlinien, ebenso pseudo-stochastische Punktcodes, die kaum zu kopieren sind, und schließlich auch rein zufällige Codes, die jedoch prinzipiell nicht kopierbar sind.
Oft steht in der Klartextzeile direkt unter dem Barcode der Dateninhalt zusätzlich in für Menschen lesbarer Schrift. So kann man bei Leseproblemen des Scanners die Information von Hand eingeben.
Es gibt sowohl 1D-Strichcodearten mit 2 Strichbreiten als auch solche mit mehr Strichbreiten. Der Barcode sollte eine gewisse Mindesthöhe haben, die in einigen Fällen genormt ist (siehe unten). Außerdem ist auch das Breitenverhältnis zwischen schmalen und breiten Balken genormt und liegt nach Norm zwischen 1:1,8 bis 1:3,4 (normalerweise soll nur 1:2,0 bis 1:3,0 verwendet werden, der größere Bereich sind erlaubte Toleranzen). Mehrstrichbreitencodes haben üblicherweise Balkenbreiten, die sich um je ein Modul erhöhen. Auch muss vor und nach dem Code ein Feld frei bleiben – die sogenannte Ruhezone – um den Code einwandfrei dekodieren zu können. Die Balken werden oft mit dem englischen Wort bars, die Lücken mit space bezeichnet. Als erstes und als letztes Zeichen stehen meistens ein Start- oder Stoppzeichen, anhand dessen der Leser einerseits die Barcodeart und andererseits auch die Leserichtung feststellen kann. Es gibt aber beispielsweise den Pharma-Code oder Laetus-Code ohne Start- und Stoppzeichen. Bei wieder anderen Codes, wie z. B. dem EAN-Code, sind Start- und Stoppzeichen gleich, die Leserichtung ergibt sich aus der Eindeutigkeit der Codewörter bezüglich vorwärts oder rückwärts lesen.
Je nach Anwendung kann der Barcode modifiziert werden. So kann der Code überquadratisch sein, das heißt, er ist höher als breit. Damit ist es möglich, mit zwei zueinander im rechten Winkel stehenden Scannern den Code in jeder Lage zu lesen. Dies wird zum Beispiel bei den Gepäckanhängern bei Fluggesellschaften verwendet. Eine andere Art ist der T-förmige Code. Dabei werden zwei Codes mit demselben Inhalt T-förmig zueinander aufgedruckt. Hier ist es möglich, mit einem einzigen Scanner in allen Richtungen zu lesen.
Es steht jedem Anbieter frei, seinen eigenen Code zu definieren. So ist die Vielfalt bereits definierter proprietärer geometrischer Codes groß. Die Kennzeichnung ist in der Regel problemlos nach allen denkbaren Verfahren möglich. Die Güte eines Codeverfahrens zeigt sich in der Verfügbarkeit geeigneter Lesegeräte, in der Interoperabilität der Verwendung und der Robustheit des Codes gegen Verschmutzung sowie – mit zunehmender Bedeutung – der Sicherheit gegen Verfälschung.

## Normierung

Die Druckqualität von Strichcodes ist in der Norm ISO/IEC 15416 definiert. Datenstrukturen (unter anderem GS1-128 oder Fact) sind in der ISO/IEC 15418 (beziehungsweise in der referenzierten ANSI MH10.8.2) festgelegt.

## Bekannte Arten von Strichcodes
### Handelsstrichcodes: EAN, UPC, IAN, JAN

Der Strichcode ist in der internationalen Norm ISO/IEC 15420 genormt. Der Inhalt ist durch die Anwendergruppenspezifikation (der Handel) in den GS1 General Specifications festgelegt:
* Zeichenvorrat 0–9
* Feste Längen:
** EAN-8 hat 8 Stellen, davon eine Prüfziffer
** EAN-13 hat 13 Stellen, davon eine Prüfziffer
** UPC-A hat 12 Stellen, davon eine Prüfziffer
** UPC-B, -C, -D sind zwar normiert, aber ohne praktische Bedeutung
** UPC-E definiert die Komprimierung von 11 Nutzziffern (wie UPC-A) in einen 8-stelligen Barcode, wenn die Nutzziffern bestimmte Folgen von Nullen enthalten.
** IAN (International article numbering) Barcode ist identisch mit EAN, der Inhalt mit EAN abgestimmt.
** JAN (Japanese article numbering) ebenso.
** Zusatzcodes: Gängig sind zweistellige und fünfstellige Zusatzcodes, die direkt neben dem EAN oder UPC gedruckt werden und beispielsweise für die Kodierung der Ausgabennummer einer Zeitschrift oder der gewogenen Menge bei losen Waren dienen (siehe unten). Auch die Angabe eines Preises ist hier möglich, jedoch kennen Kassensysteme „ihre“ Artikel und den zugehörigen Preis in der Regel.
* Zur Darstellung sind je 4 verschiedene Balken- und Lückenbreiten notwendig, die insgesamt 32 Symbole definieren: Für die Ziffern 0–9 gibt es jeweils 3 Symbole (Codierung A, B, C), dazu kommt ein Randsymbol als erstes und letztes Zeichen und schließlich ein Trennsymbol in der Mitte.
* Auch für die Kodierung des EAN-13 (13 Ziffern!) genügen 12 Symbole. In der Literatur hat sich eine Zählung der Ziffern von rechts nach links durchgesetzt. Während die Ziffern der Stellen 1–6, darunter die Prüfziffer auf Stelle 1, mit den entsprechenden Symbolen aus dem Satz C gedruckt werden, werden die Ziffern 7–12 aus Symbolen aus A und B codiert und zwar in einer Abfolge, aus der sich eindeutig die 13. Ziffer ergibt. Das ist die vorderste Ziffer. Meist steht die Nummer im Klartext darunter und man sieht die 13. Ziffer dann links neben dem Barcode. Der UPC-A Code ist der ursprüngliche Code in diesem System. Der UPC-A Code verwendet nur den Zeichensatz A für die Ziffern 7–12. Damit erhält der UPC-A Code als 13. Stelle die Ziffer 0, während der EAN-13 die Werte von 0 bis 9 in der 13. Stelle annehmen kann. Die 13. Stelle wird nie mit gedruckt. Scanner lassen sich so programmieren, dass der UPC-A Code entweder 12- oder 13-stellig gelesen wird.
Es empfiehlt sich, diese Codearten nur im Zusammenhang mit einer gültigen EAN (seit 2009 als GTIN – Global Trade Item Number bezeichnet) einzusetzen, da ansonsten das Risiko von Verwechslungen sehr hoch ist. Normkonform ist aber auch der Einsatz der Codeart auf abgegrenztem Raum (Inhouse-EANs), die mit der Ziffer 2 beginnen und ansonsten frei nach Bedarf des Anwenders mit Ziffern gefüllt werden. Im deutschen Discount-Handel sowie bei Handelsmarken werden solche Kodierungen verwendet. Die Überschneidungsgefahr besteht nicht, weil diese Artikel immer nur bei einer Handelskette auftauchen. Wegen möglicher Überschneidungen empfehlen sich solche Barcodes nicht, wenn mehrere Geschäftspartner beteiligt sind, etwa im Großhandel oder für Markenartikel.

#### Unterarten

* ITF-Code:
** Der ITF-Code (Interleaved Two of Five) ist wie die Europäische Artikelnummer aufgebaut, jedoch ist zusätzlich ein einstelliges ITF-Präfix vorangestellt, durch das verschiedene Mengeneinheiten oder Abpackungen eines Materials unterschieden werden können. Der ITF-Code wird zur Kennzeichnung von Transporteinheiten verwendet. In dem Kontext EAN bzw. GS1 wird dieser Code immer als ITF-14 bezeichnet. Der ITF-14 ist ein normaler 2/5 interleaved Code gemäß ISO/IEC 16390, hat aber Einschränkungen: Modulbreite nur von 0,495 mm bis 1,016 mm, immer 14-stellig, immer mit GTIN-Prüfziffer. Dieser Code ist nicht zur Lesung an der Supermarktkasse vorgesehen.
* ISBN und ISSN werden im EAN-13-Code kodiert:
** Bei den 10-stelligen ISBN wird die letzte Ziffer (die Prüfziffer des numerischen ISBN-Codes) entfernt, eine 978 vorangestellt und die Prüfziffer des Barcodes angehängt, so dass der 13-stellige EAN-Code entsteht. Die neuen 13-stelligen ISBN sind hingegen in allen Ziffern von vornherein identisch mit der EAN, und die zusätzlich eröffnete Bookland-Nummerngasse 979 erlaubt perspektivisch eine Verdoppelung der Größe des Nummernraums.
** Bei ISSN (für Zeitschriften) wird ähnlich wie bei der ISBN verfahren: es wird die 977 vorangestellt, darauf folgen die sieben Ziffern der ISSN (also ohne die Prüfziffer). Die Ziffern 11 und 12 können für Spezial- oder Doppelausgaben verwendet werden. Bei Nichtverwendung sind diese Reserveziffern jeweils „0“. Die dreizehnte Stelle ist die Prüfziffer gemäß der EAN-Richtlinien.
** Add-on-Codes können den EAN-13-Code für ISBN und ISSN ergänzen. Die Add-on-Codes sind vom EAN-13 durch eine Ruhezone abgesetzt und enthalten entweder zwei Ziffern (für Heftnummer, Ausgabe) oder 5 Ziffern (Preis ohne Komma, keine Währungsangabe) ohne dass eine weitere Prüfziffer angehängt wird.

### Zielcode

Zielcode sind Codes, die Postunternehmen auf Briefe und Postkarten drucken. Diese werden in Briefzentren auf die Sendung aufgebracht. Damit wird eine schnellere maschinelle Weiterleitung und Sortierung ermöglicht.

### 2/5-Familie

Zeichenvorrat 0–9
* 2/5i ist nur mit gerader Ziffernanzahl verwendbar. Er sollte immer mit Prüfziffer verwendet werden. Er hat eine hohe Informationsdichte, das heißt, auf kleinem Raum können viele Ziffern untergebracht werden. Die Konstruktion des Codes verzahnt Balken und Lücken so, dass die Balken eine Informationseinheit ergeben sowie die dazwischen liegenden Lücken eine weitere Informationseinheit. Für eine Ziffer werden fünf Informationseinheiten benötigt, wobei immer zwei breit und drei schmal sind. Das erzwingt die geradzahlige Ziffernanzahl und liefert die hohe Informationsdichte.
Der 2/5 Interleaved ist in der Norm ISO/IEC 16390 spezifiziert. Oftmals findet man auch die Bezeichnung ITF für Interleaved 2 of 5 − Interleaved Two of Five. In der Regel wird die Bezeichnung ITF-14 in einem etwas anderen Kontext verwendet. Hier handelt es sich nach wie vor um einen gewöhnlichen 2/5i-Code. Die Besonderheit ist die einschränkende Spezifikation durch die GS1 General Specifications. Der Code ITF-14 hat damit nur noch fest 14 Stellen, er muss eine Prüfziffer beinhalten, der erlaubte Größenbereich ist für die automatisierte Erfassung optimiert und das Verhältnis sollte 1:2,5 betragen. In der Praxis kann es passieren, dass der Code nur zu einem Teil gelesen wird, weil ein Teil des Codes verdeckt, nicht sichtbar oder verzerrt ist. Diese Problematik kann eine eingestellte Prüfziffer nur abschwächen. Darum sollte man den Interleaved Code nur mit einer definierten Stellenlänge verwenden.
Nur noch selten verwendete Unterarten:
* Industrial / Discrete
* Matrix
* 3 Striche Datalogic
* invertiert
* IATA
Die Unterarten sind nicht normiert, sondern firmenspezifisch definiert.

### Code 39

Der Code 39 ist ein älterer alphanumerischer Code. Er ist weit verbreitet in der Industrie. Beispielsweise in der Automobil- (bei den VDA-Versandetiketten) oder in der Pharmaindustrie (bei der Pharmazentralnummer als PZN-Code oder Code-32) wird er häufig eingesetzt, da er wegen seiner großen Drucktoleranzen einfach herzustellen ist. Bei dieser Codeart entspricht ein Zeichen Klarschrift einem Zeichen Barcode. Start- und Stoppzeichen werden jeweils durch ein * dargestellt.
Der Code 39 ist in der ISO/IEC 16388 spezifiziert. Unterarten sind:
* Standard Code 39 (Zeichen A–Z, Ziffern 0–9, sowie die Sonderzeichen $%/+.-),
* erweiterter Code 39 (Zeichen A–Z, a–z, 0–9, sowie einige Sonderzeichen). Es ist der komplette ASCII-Zeichensatz möglich, in diesem Fall hat er aber eine geringe Informationsdichte, da er jeweils zwei Zeichen für ein Klarschriftzeichen benötigt.
* Code 32 (22 Buchstaben, Ziffern 0–9, Start-/Stoppzeichen *) (italienischer Pharmacode − Artikelnummer für Pharmaprodukte). Es ist ein selbstüberprüfender, diskreter Code. Vorteil: hohe Sicherheit. Nachteile: geringe Informationsdichte, Lücken innerhalb eines Zeichens tragen Information, niedrige Toleranz.

### Code 93

Der Code 93 ist als Weiterentwicklung aus dem Code39 entstanden. Der Codeaufbau ähnelt allerdings mehr dem Code128. Der Code 93 erreicht bei alphanumerischer Codierung die höchste Zeichendichte bei linearen Strichcodes. Diese Codeart hat in Europa so gut wie keine Bedeutung.
Zeichenvorrat ASCII-Zeichensatz: Zeichenvorrat A–Z, 0–9, einige Sonderzeichen.
Norm: ANSI/AIM BC5 1995

### Codabar

Die Kodierung Codabar stellt einen beschränkten alphanumerischen Zeichensatz zur Verfügung. Codabar wurde für den Einzelhandel entwickelt, aber schnell durch die EAN und Code128 abgelöst.

### Code128

Der Code128 ist ein verschachtelter Code, in dem Striche und Lücken signifikante Information tragen. Dazu werden sowohl die Strichbreiten als auch die Breite der Lücken variiert. Es gibt vier unterschiedliche Strichbreiten und vier unterschiedliche Lückenbreiten. Die Dekodierung erfolgt über die Verhältnisse von Strich-Lücken-Pärchen. Damit erzielt man eine verbesserte Dekodierfähigkeit, wenn die Strichbreiten variieren, weil das Maß Strich + Lücke gleich bleibt, wenn ein Strich breiter wird (die Lücke wird entsprechend meistens schmaler).
Der Code 128 löst heute langsam den Code 39 ab, da die Informationsmöglichkeiten in diesem Code wesentlich größer sind. Es können bei einer gleichzeitig hohen Informationsdichte alle Zeichen zwischen ASCII 0 und ASCII 127 dargestellt werden. Es werden dabei gleiche Symbole für mehrere Zeichen gleichzeitig verwendet, diese werden aber durch Umschaltzeichen am Anfang des Codes oder vor einem Block dargestellt (Zeichensatz A, B und C). Im Code 128 Zeichensatz C können nur die Ziffern von 0 bis 9 kodiert werden. Aufgrund dieser Einschränkung passen in ein Barcodezeichen immer zwei Ziffern, während normalerweise nur ein Zeichen kodiert werden kann. Ein rein numerischer Code 128 wird daher deutlich weniger Platz benötigen als alphanumerische Kodierungen im Code 128.
Der GS1-128 ist eigentlich kein Barcode, sondern eine Datenstruktur für die Logistik, die als Transportmedium (physical layer) den Code128 definiert. Das Protokoll ist auch EDI-fähig mittels EANCOM. Das Sonderzeichen FNC1 nach dem Startzeichen hat das Ziel, die GS1-128-Datenstruktur eindeutig erkennbar zu machen. Die Eindeutigkeit funktioniert nur, wenn alle Anwender die Regeln dazu kennen und sich daran halten. In der Praxis ist beides nicht der Fall. Die Eindeutigkeit ist daher nur bedingt vorhanden und die (bedingte) Eindeutigkeit des GS1-128 ist kein Alleinstellungsmerkmal der GS1-128-Datenstruktur.
Durch die Umbenennung der EAN-Organisationen in GS1 (Global Standards 1) wird der EAN128 jetzt als GS1-128 bezeichnet. Inzwischen wird die GS1-128-Datenstruktur auch mit anderen Codearten verwendet (GS1-Databar, früher RSS, DataMatrix). GS1-128-Datenstruktur und Größenrestriktionen sind in den GS1 General Specifications definiert.
Eine weitere (bedingt) eindeutige Datenstruktur wird auf den sogenannten ODETTE Transportetiketten der Automobilindustrie verwendet. Hier kommt ebenfalls der Code 128 zum Einsatz (in älteren Anwendungen auch der Code 39).
Der Paketdienstleister DHL verwendet zur eindeutigen Identifikation transportierter Packstücke einen License Plate (= Seriennummer einer Transporteinheit für Tracking und Tracing entsprechend ISO/IEC 15459-1). Zur eindeutigen Kennzeichnung eines Barcodes als License Plate werden die ISO-Datenstrukturen verwendet, die in der ISO/IEC 15418 definiert sind. Dies umfasst sowohl Datenstrukturen nach ANS MH10.8.2 als auch nach GS1. Auch hier kommt der Code 128 als Datenträger zum Einsatz – bei Verwendung von GS1-Datenstrukturen wiederum in der Ausprägung GS1-128. Durch den globalen Charakter dieser Nummer besteht keine Beschränkung auf von DHL selbst herausgegebenen Nummern. Kunden können vielmehr alternativ eigene Nummern verwenden, sofern sie dem Standard ISO 15459 entsprechen.
Norm: Code 128 ISO/IEC 15417

## 2D-Codes

Zweidimensionale Flächencodes kodieren die Informationen meistens in der Fläche, wobei die Information dann nicht in Form von Strichen, sondern in Form von (weißen und schwarzen) Punkten enthalten ist. Es wird zwischen gestapelten Barcodes, Matrix-Codes, Punktcodes und einigen weiteren Sonderformen unterschieden.
In der Regel sollte der Ausdruck „zweidimensionaler Strichcode“ vermieden werden, da das Teilwort „Strich-“ für die Balken des klassischen eindimensionalen Codes steht. Mit Ausnahme von gestapelten Barcodes wie beispielsweise dem PDF417 enthalten 2D-Codes keine Balken.

## Strichcodelesegerät

Barcodeleser gehören zu den Datenerfassungsgeräten. Es gibt verschiedene Arten von Lesern:
* Lesestift: Es wird der Lesestift von Hand über den Barcode bewegt. Ein Dekodierer empfängt das Hell/Dunkel-Signal und entziffert so den Barcode.
* CCD-Scanner: Der Barcode wird mit LEDs beleuchtet. Der Barcode reflektiert je nach Helligkeit oder Dunkelheit auf eine CCD- oder Photodiodenzeile.
* Laser-Scanner: Ein oder mehrere Laserstrahlen werden auf den Barcode gerichtet und werden abhängig von der Farbe verschieden reflektiert und dekodiert.
* Handy-Scanner: Eine neue Generation sind sogenannte Handy-Scanner. Eine Handysoftware ermöglicht es, 2-dimensionale Codes (z. B. Datamatrix) und Barcodes mit der Digitalkamera des mobilen Telefons zu erfassen und dem Anwender die Code-Information sofort in dekodierter Form, also in Klartext, anzuzeigen.

## Strichcodeprüfgerät

Ein Strichcodeprüfgerät (engl.: bar code verifier) ist ein spezielles Messgerät zur Kontrolle der Druckqualität (Kontrast, Metrik, systematischen Eigenschaften und manchmal Datenstrukturen). Diese Messgeräte sind messgerätetypischen Messtoleranzen unterworfen. Die Anforderung an die Messgenauigkeit dieser Messsysteme ist in der ISO/IEC 15426-1 (linear) beziehungsweise der ISO/IEC 15426-2 (2D) festgelegt. Diese Anforderung an die Messgenauigkeit des Gerätes wird häufig mit der Druckqualitätsanforderung der Strichcodes und Matrixcodes verwechselt. Die Anforderungen an die Codedruckqualität ist in der ISO/IEC 15416 für Strichcodes, ISO/IEC 15415 für Matrixcodes festgelegt.
Im Gegensatz zum Lesegerät muss das Prüfgerät für eine Qualitätskontrolle unter definierten Bedingungen arbeiten, das heißt, es wird ein gleichbleibender Winkel, Abstand und Unterlage benötigt. Ein Lesestift, Laserscanner, CCD oder kamerabasierter Scanner scheidet also als Prüfmittel aus. Die in der Praxis häufig zu findende „grading“ Fähigkeit von Scannern ist daher eine Pseudomessung, die nur mit sich selber vergleichbar ist. Eine echte Messung muss durch ein kalibriertes Messgerät durchgeführt werden, dessen Messergebnisse auf nationale Standards rückführbar sind (siehe Physikalisch-Technische Bundesanstalt in Braunschweig). Für Anwender ist es oft schwierig zu unterscheiden, welche Geräte eine Pseudomessung liefern und welche Geräte echte Messgeräte sind. Sogar einige Branchenexperten kennen diesen Unterschied nicht und verkaufen Scanner mit Pseudomessfähigkeiten als kalibrierte optische Messgeräte.
Die Kontrolle der Druckqualität von Strichcodes ist für die effiziente Funktion eines auf Strichcodes basierten Systems unerlässlich. In der Praxis wird dieser Aspekt sehr oft vernachlässigt, was dazu führt, dass die gewünschte Effizienzsteigerung und Fehlerminimierung nicht erreicht wird. Probleme treten oft erst einige Zeit nach der Inbetriebnahme eines solchen Systems auf. Mit schlechter werdendem Wartungszustand der Strichcodedrucker nimmt die Strichcodequalität und damit die Effizienz stetig, aber zunächst unmerklich, ab.
Die Prüfkriterien sind in der Norm ISO/IEC 15416 (lineare Strichcodes) festgelegt. 2D-Matrix-Codes und gestapelte Codes werden gemäß der Norm ISO/IEC 15415 geprüft. Beide Normen legen eine Qualitätseinstufung wie folgt fest:
* Grad 4 − sehr gut (ANSI Grade A)
* Grad 3 − gut (ANSI Grade B)
* Grad 2 − befriedigend (ANSI Grade C)
* Grad 1 − ausreichend (ANSI Grade D)
* Grad 0 − durchgefallen (ANSI Grade F)
Typische Fehler sind ungenaue Strichbreiten und Positionen, die durch Interpolationsfehler entstehen, wenn Codes als Bitmapgrafiken oder mit Truetype-Fonts erstellt werden.

## Herstellung von Strichcodes

Strichcodes werden für größere Mengen von Etiketten, Verpackungen etc. mit allen üblichen Druckverfahren gedruckt. In der Praxis werden hochauflösende, kartuschenbasierte Tintenstrahldrucker in der Industrie z. B. zur direkten Beschriftung von Faltschachteln eingesetzt. Die Druckqualität der Barcodes hängt vom Trägermaterial ab (z. B. Wellpappe), wenn direkt mit Tinte oder Laser beschriftet wird. Das kann zu massiven Problemen führen oder bei geeignetem Trägermaterial gute und sehr preiswerte Barcodierungen erzeugen. Barcodes in der Druckvorstufe (üblich Druckverfahren wie z. B. Flexodruck, Tiefdruck, Offsetdruck) sollten immer nur mit dafür geeigneten speziellen Programmen erzeugt werden. Diese Programme erlauben die Vorgabe einer Balkenbreitenkorrektur (engl. Bar Width Correction, Abk. BWC) bzw. Balkenbreitenreduktion (engl. Bar Width Reduction, Abk. BWR), um den immer vorhandenen Druckzuwachs auszugleichen. Die Auflösung bestimmt dabei die Skalierungsschritte des Barcodes. Das Ergebnis muss die Anforderungen der Norm ISO/IEC 15421 einhalten.
In den meisten Fällen werden spezielle Etikettendrucker verwendet. Dieses können Thermodirekt- oder Thermotransferdrucker sein. Es empfiehlt sich hierbei der Einsatz von Etikettendesignprogrammen. Diese Programme müssen die druckerinternen Barcodegeneratoren verwenden können. Nur sehr wenige Etikettendesignprogramme eignen sich für den Einsatz mit Laserdruckern, da diese normalerweise keine Barcodegeneratoren eingebaut haben (die auftretende Punktüberlappung wird nicht berücksichtigt, das ist auch ein Problem bei Barcodefonts).
Mit Barcodefonts, die als eigene Schrift auf dem jeweiligen PC gespeichert sind, können ebenfalls Strichcodes hergestellt werden. Die Anwendung hat fast immer Probleme in der Druckqualität zur Folge, da die Schriftart die Druckerauflösung nicht berücksichtigt. Das ist bei Barcodes aber notwendig, um die Verhältnisse von Balken und Lücken einzuhalten. Bei hochauflösenden Laserdruckern bzw. genügend großen Barcodes verliert dieser Effekt an Bedeutung. Zu beachten ist auch, dass es je nach Symbolik nicht ausreicht, einfach die zu kodierenden Zeichen unter Verwendung des gewünschten Fonts zu drucken. Vielmehr ist gegebenenfalls eine Berechnung von Prüfziffern (z. B. EAN 13), der Andruck von Start- und Stoppsymbolen (z. B. EAN-Familie) sowie die Kombination jeweils zweier Ziffern zu einem Symbol (z. B. Interleaved 2/5) zu berücksichtigen. Bei Laserdruckern, in die die Schrift vorher hineingeladen wird oder die ein Barcodemodul eingebaut haben, kann man wie mit einem Barcodefont Probleme bekommen. Wenn ein Barcodegenerator im Drucker eingebaut ist, sollte es keine Probleme geben.
Letztlich können Barcodes auch geätzt, gefräst, gestanzt, genadelt, gelasert oder auf jede beliebige andere Art erzeugt werden, sofern nur eine den Barcode-Spezifikationen gemäße Veränderung der Oberfläche vorhanden ist, die durch ein optisches System (Laser/CCD) erkannt werden kann. Dabei wird z. B. bei streifendem Licht der Schattenwurf des Höhenversatzes durch die Bearbeitung im Scanner ausgewertet.
Die Strichcodetechnik geht davon aus, dass der Code sich auf einem hellen, (normalerweise für Rotlicht) diffus reflektierenden Trägermaterial befindet. Die Striche müssen dunkel sein und das Licht des Scanners absorbieren. In einem offenen logistischen System gehen alle Beteiligten von diesen Verhältnissen aus. In einem geschlossenen, lokalen System kann davon abgewichen werden, weil die Scanner lokal auf die Verhältnisse optimiert werden können (z. B. Kameratechnik mit effizienter Bildverarbeitung und spezielle Beleuchtungen).

## Datenstrukturen

Eine Datenstruktur ist im einfachsten Fall nur die Kenntnis über die Bedeutung der Zeichenfolge, die in einem Strichcode kodiert wurde. Datenstrukturen sind sehr wichtig, wenn Strichcodes in großen, firmenübergreifenden logistischen Systemen eingesetzt werden. Jeder Einführung einer Strichcodeanwendung sollte die Überlegung über die einzusetzenden Datenstrukturen vorausgehen. Es gibt allgemein verfügbare Datenstrukturen, die in der ISO/IEC 15418 normiert sind. Die Vorgehensweisen für weltweit eindeutige Artikelnummern, Seriennummern usw. sind in dem Normenwerk ISO/IEC 15459 (Teil 1 bis Teil 8) definiert. Voraussetzung für eine weltweit eindeutige Nummernvergabe ist die Vorgehensweise, die in der ISO/IEC 15459-2 definiert ist. Die Organisationen, die sich auf diese Art registrieren lassen, können weltweit eindeutige Nummernsystem erzeugen, die auch untereinander unverwechselbar sind. Beispiele für solche registrierten Organisationen sind ODETTE, Dun & Bradstreet, EDIFICE, IBM, UPU, NATO. GS1 gehört auch in diese Liste, bedarf aber einer besonderen Erwähnung, da oft die irrige Annahme existiert, es sei die einzige Organisation, die weltweit eindeutige Nummernsysteme erzeugen kann.

## Sicherheit

Bei der Implementierung von Barcode-Systemen sollte stets eine Zeichenprüfung stattfinden. Insbesondere Code 39 stellt einen möglichen Angriffsvektor dar, da alphanumerische sowie Sonderzeichen darstellbar sind. SQL-Injection-Angriffe sind somit prinzipiell möglich.

## Designbarcodes

Von einigen Unternehmen wird die Strichstruktur des Barcodes künstlerisch ausgearbeitet und damit als Mittel des Markenbrandings genutzt.
* Designbarcode der Wodkamarke Grasovka, der im unteren Teil maschinenlesbar – „valide“ – ist
* Valider künstlerischer Barcode der Weinmarke Tall Horse
* Valider Barcode auf einem Glas Hühner-Bouillon
* Valider Barcode auf Sardinendose
* Valider Barcode auf einer Packung Erdnüsse

## Kuriosa

* Manche evangelikalen oder rechtsesoterischen Verschwörungstheoretiker in den USA behaupten, die senkrechten Begrenzungs- und Trennlinien der EAN-Barcodes stellten die Ziffern 666 und damit die Zahl des Tieres aus der Offenbarung des Johannes des Neuen Testaments (13,18 ELB) dar. In Vers 17 heißt es, nur wer das Malzeichen des Tieres trage, werde noch kaufen oder verkaufen können. Tatsächlich sind diese Linien Marker und dienen beim Einlesen mit dem Lesegerät der Synchronisation. Sie zeigen, wo der Codeabschnitt beginnt und endet.
* Einige Unternehmen „entstören“ den Barcode durch einen kleinen horizontalen Strich, da manche Kunden behaupteten, sie hätten Angst vor angeblichen Energiefeldern, die nach der Meinung einiger Esoteriker von den Strichcodes ausgehen sollen. Manche Mineralwasserabfüller drucken eine hellrosa oder hellgrüne liegende Acht auf die Barcodes. Dies solle „noch effektiver“ entstören als ein horizontaler Strich.
* In der chinesischen Neustadt Lingang New City haben die Architekten von Gerkan, Marg und Partner ein Gebäude mit Strichcode-Fassaden entworfen.
* Die Fassadengestaltung der Sächsischen Landes- und Universitätsbibliothek (SLUB) soll laut Eigenangabe an Strichcodes erinnern, die als eindeutige Identifikationsmerkmale der Bestandseinheiten in einer Bibliothek dienen.
* Im Japanischen wird eine überkämmte Glatze mit dem Anglizismus „bākodo“ aufgrund der Ähnlichkeit der herübergelegten Strähnen mit einem Barcode bezeichnet.
* Durch Querstrich „entstörter“ Barcode
* Durch liegende Acht „entstörter“ Barcode
* Eingangsbereich der Sächsischen Landes- und Universitätsbibliothek
* Barcode-Denkmal an einem Kreisverkehr in Neuwied

## Ähnliche Codes

* High Capacity Color Barcode – Ein von Microsoft entwickelter farbiger Code
* Ultracode – Ein farbiger 3D-Code mit hoher Datendichte

## Alternativen

Statt einfach auf Packung oder Etikett gedruckte optische Codes werden für die automatische Identifikation und Datenerfassung zunehmend auch Transponder wie RFID genutzt, da sie individualisierbar sind und zum Auslesen nicht sichtbar sein müssen. Nach Bauart können sie übertragene Informationen speichern. Amazon Go setzt dagegen auf andere Sensorik, die sich Techniken der autonomen Fahrzeugsteuerung bedient und kein offener Standard ist und die zeitlichen Abläufe erkennen muss.