EAN-13 Barcode mit PHP erkennen & dekodieren

Nun, ich habe mich gefragt wie schwer es wohl ist den Barcode der auf alle Produkte prangt zu entziffern.
Wie die Kodierung funktioniert erklärt z.B. Wikipedia. Das Spannende ist aber die grafische Erkennung,
die Fehlertoleranz und „Intelligenz“ die implementiert werden muss.

Nicht sonderlich erfolgreich war der Versuch, die Kanten der Striche zu erkennen. Es hat zwar meistens
gut geklappt, jedoch reichte eine unscharfe Vorlage aus, um den Code unlesbar zu machen. Ich suche aber
genau nach eine Möglichkeit um solche Fehler zu korrigieren.

Leider reicht eine Vorlage mit „schwammigen“ Kanten aus, damit auch die Breitenerkennung scheitert und
somit ganz falsche Sequenzen gelesen werden.

Der nächste Versuch: den hellsten und dunkelsten Pixel im Lesebereich ermitteln und den Durschnitt errechnen.
Vielleicht reicht der Vergleich mit diesem um festzustellen, wann die Striche des Codes anfangen und enden.

Sobald das Ergebnis zufriedenstellend ist, werde ich den Decoder hier zum Testen verlinken.

Ein anderer PHP Dekoder (unten auf der Seite):
http://www.ashberg.de/php-barcode/
Ich werde meinen Decoder einfach mal an diesen Fähigkeiten messen ;)

Das könnte dich auch interessieren …

6 Antworten

  1. marco sagt:

    Moin!

    würde mich ja mal interessieren wie weit du gekommen bist! versuche das ganze in flash! läuft super, nur sobald ich die codes via webcam scanne ist das limit erreicht!

  2. Erich Kachel sagt:

    Ein Scanner mit Flash gibt es z.B. hier, oben links:
    http://www.codecheck.info/

    Es ist mir allerdings nicht gelungen, irgendwas erkennen zu lassen. Es scheitert mal wieder an der Webcam, die bei diesem Abstand keine scharfen Konturen mehr abbilden kann.

  3. Benjamin sagt:

    Hallo!

    Mich würde sehr interessieren wie weit du gekommen bist…

    Ich stand vor ein paar Jahren mal mit Folke Ashberg in Kontakt und hatte auch den Quelltext seines Scanners – dieser ist der einzige den ich bisher als Funktionierend einstufen würde – nur finde ich diesen nicht mehr und Folke ist nicht erreichbar.

    Andere Seiten geben nur wenig her …

    Wäre super wenn du ggf. den Quelltext veröffentlichen würdest.

    Viele Grüße
    Benjamin

  4. Erich Kachel sagt:

    Hallo Benjamin,
    Ich bin damals mit meinem Experiment nur so weit gekommen, dass anhand der Umrisse des Barcodes -bei guten Aufnahmen – dieser erkannt wurde. Die Fehlerquote war aber recht groß. Der experimentelle Code ist nicht wirklich zur Weiterentwicklung geeignet aber ich werde ihn nochmal kurz sichten und dann entscheide ich über die Lizenz der Veröffentlichung.

  5. Erich Kachel sagt:

    An dieser Stelle meine Ergebnisse von Ende 2008 als die Entwicklung zeitweilig eingestellt wurde:

    http://www.erich-kachel.de/wp-content/uploads/2010/08/barcode_scan.zip

    Entpacken, auf einem Apachen (am besten XAMPP weil damit getestet) starten mit „test.html“. Die Kantenerkennung ist hier auf eine Scann-Zeile beschränkt – da kann mehr raus geholt werden. Kontrast lässt sich mit dem Parameter „c“ einstellen: „index.php?c=15“.

    Ergebnis des Scanns wird oberhalb des Bildes eingeblendet.
    Die erste Zeile zeigt die erkannten Abstände bzw. Breiten: rote Zahlen sind Breiten weißer Linien, schwarze Zahlen Breiten schwarzer Linien.
    6|6|4|19|10|7|5|12|
    Die dritte Zeile zeigt die erkannten Zahlen (stehen in Klammern) davor die vierstellige erkannte Kodierung:
    3211:(0)2411~2311:(4)1231:(5)