cse
Goto Top

Bilder Anhand OCR umbenennen, gern Bezahlsoftware

Hi zusammen,

da Onlinesuche nicht richtig weiter helfen kann (oder ich bin zu blöd dazu) und nach einigen Test-Downloads und verlorener Zeit hoffe ich dass hier jemand eine Idee hat.

Wir sind auf der Suche nach einer Software, welche folgendes kann:

  • Fotos von Camera sollen in einem Ordner landen
  • Ordner check die Fotos immer wieder mittels ORC

bis hier hin sicher kein Problem face-wink

  • Es soll die Chargennummer gefunden werden (beginnend mit 00)
  • Die Datei (oder eine Kopie) soll mit dem Namen der Chargennummer abgespeichert werden

Hintergrund:

bei uns wird Regelmäßig der korrekte Umgang mit Etiketten verbockt, das heißt linke und recht Teile sehen gleich aus, sind es aber nicht. Ursache ist der Mensch.
Oftmals Faulheit und LMAA-Einstellung. Man kommt den Verursachern aber schwer auf die Schliche.

Daher soll ab sofort ein Foto gemacht werden von einer Materiallaufkarte (Handschrift) welche auf der Charge/dem Material liegt und daneben noch der Warenanhänger mit Chargennummer.

Man sieht also 3 Dinge auf den Bildern:

  • Palette mit Material
  • Materiallaufkarte
  • Warenanhänger mit u.a. Chargennummer

Erste Zweifel:
Fotoqualität (Licht, Winkel) sehr wichtig
Chargennummer nicht immer an der gleichen Position

naja, ich habe die Befürchtung dass es dafür keine Lösung gibt, aber versuchen wollte ich es. Ggf. kann sowas programmiert werden ... gern auch Vorschläge für Programmierer eures Vertrauens.

VG + schönes WE
CSE

Content-Key: 619771

Url: https://administrator.de/contentid/619771

Printed on: April 24, 2024 at 07:04 o'clock

Member: cykes
cykes Nov 06, 2020 at 18:18:58 (UTC)
Goto Top
Nabend,
Zitat von @cse:
[...]
naja, ich habe die Befürchtung dass es dafür keine Lösung gibt, aber versuchen wollte ich es. Ggf. kann sowas programmiert werden ... gern auch Vorschläge für Programmierer eures Vertrauens.
Es gibt für nahezu alles eine Lösung, von der Stange wirst Du aber für Dein Problem sicher nichts finden. Ist halt eine Frage des Budgets bzw. was ihr für die Individuallösung bereit seit zu bezahlen.

Aber vielleicht mal ein anderer Ansatz: Wäre es nicht möglich, den Prozess im Vorfeld abzuwandeln und gleich auf das Label und/oder die Laufkarte ein Barcode oder QR-Code zu drucken. Dieser lässt sich einfacher auslesen, ggf. auch bei ungünstiger Lage.
Wird im Endeffekt/auf lange Sicht sicher kostengünstiger als Dein Ansatz.
VG + schönes WE
CSE
Ebenfalls
cykes
Member: wiesi200
Solution wiesi200 Nov 07, 2020 at 09:01:47 (UTC)
Goto Top
Hallo,

Beim Selber Programmieren fällt mir Tesseract OCR ein. Hab aber noch nie damit gearbeitet.

Gängige DMS Systeme können das aber auch.

Wenn der einzulesende Text Handschrift ist wird's schwierig.

Ich schließe mich @cykes an:
Prozesse ändern.
Barcodes, QR oder RFID verwenden
Member: beidermachtvongreyscull
Solution beidermachtvongreyscull Nov 07, 2020 at 15:29:41 (UTC)
Goto Top
Ich empfehle "NSi AutoStore" (jetzt heißt es "KoFax AutoStore" soweit ich weiß).

Ich bin aber aufgrund meiner Erfahrung davon überzeugt, dass wenn es um die Erkennung von Handschriftlichem geht, Du keine adäquate Lösung finden wirst, die entweder bezahlbar oder überhaupt inhouse betrieben werden kann.

Dazu wirst Du eine KI-gestützte Lösung brauchen und die jede Menge Training.

Gruß
bdmvg
Mitglied: 146189
146189 Nov 08, 2020 updated at 07:11:34 (UTC)
Goto Top
Und vor allem bei OCR Erkennung, wer kontrolliert die erkannten Nummern im Nachhinein? Es bleibt immer das Risiko von Zahlendrehern und falsch erkannten Nummern bei solchen Prozessen wenn keine weitere Instanz (z.B. der Mensch) die Ergebnisse auch auf Korrektheit kontrolliert. Deswegen bieten wie oben schon genannt z.B.QR-Codes Fehlerkorrekturmerkmale, die ein Kontrollieren im Nachhinein erübrigen.
Member: cykes
cykes Nov 08, 2020 at 07:48:52 (UTC)
Goto Top
Zitat von @146189:
Und vor allem bei OCR Erkennung, wer kontrolliert die erkannten Nummern im Nachhinein?
Genau und vor allem wie lang soll diese Endkontrolle dauern, die Palette solang aufgehalten werden und was kostet der/die Mitarbeiter, die diese durchführen?

Es hört sich ja so an, als wäre der aktuelle Prozess historisch gewachsen - das machen wir so seit (bewusst übertrieben oder vielleicht auch nicht face-wink) hundert Jahren. Ich finde sogar, dass es ein Fehler ist, den jeweiligen Mitarbeitern die Schuld in die Schuhe zu schieben, nur weil der Prozess nicht angepasst wurde bei vermutlich wachsendem Aufkommen.
Ist der Prozess an sich nicht angepasst, wird einen Endkontrolle ungleich komplexer, ob die Fehler damit dann gänzlich ausgemerzt werden können, steht ebenfalls in den Sternen.
Mir ist durchaus bewusst, dass eine Änderung des Prozesses durchaus auch aufwändig ist, aber auf lange Sicht sicher der einzige Weg (frei nach dem Motto: Der Fisch stinkt vom Kopf...).

Gruß

cykes
Member: cse
cse Nov 09, 2020 at 07:36:59 (UTC)
Goto Top
Hallo zusammen und vielen Dank für euer Feedback!

Handschriftlich muss zum Glück nichts erkannt werden. Ich schaue mir mal KoFax an.
Ja ein DMS, das wäre es - leider ist hierbei die Konzernzentrale nicht auf unserer Seite und man scheut das Invest. Man glaubt es kaum, aber wir haben noch immer ein "analoges" Archiv. Das es ist megatraurig.

Gewiss könnte man meinen der MA ist nicht schuld, aber es passieren halt Dinge wie: "Ich mache jetzt mal kein First-In-First-Out und tausche Label aus um die Paletten von hinten nicht rauszusuchen, sieht doch eh alles gleich aus." Liegt mMn nach an der falschen Lagerweise.
Klar sehen die Teile gleich aus, aber es gibt linke und rechte Teile.

Das witzige ist ja dass Laufkarten genommen werden auf denen die MA unterschreiben und es hängt ein Zusatzlabel an, dass doppelt geprüft wurde. Macht sich dann toll beim Kunden "Was beutetet bei euch doppelt geprüft, wenn die Ware hier doch falsch ankommt?"

Ich habe mir schon einige OCR-Programme angeschaut, die können von Fotos die Chargennummern erkennen, nur sind die Label halt immer mal wo anders auf dem Foto (je nach Palettentyp oder Fotografierenden). Auch bin ich bereits davon ausgegangen dass es eine angepasste Lösung für uns geben wird.

Prozess anpassen wäre ideal, nur sieht man hier keine Möglichkeit den Prozess anders darzustellen. Ärgert mich auch, weil man halt versuchen muss was abzufangen was eigentlich nicht geht und auch mit dieser Lösung weiterhin passieren kann (mMn).

VG und einen schönen Start in die Woche face-smile

CSE
Member: colinardo
Solution colinardo Nov 09, 2020, updated at Nov 10, 2020 at 11:08:17 (UTC)
Goto Top
Servus @cse ,
zu den Vor- und Nachteilen haben die Kollegen ja schon alles gesagt, um die Frage doch noch mit etwas Code zu beantworten hier mal ein Beispiel mit Tesseract OCR und Powershell da es ja anscheinend des öfteren immer mal wieder hier im Forum nachgefragt wird (s. Link unten).

Für das Beispiel sollte im Skriptordner einen Ordner namens "images" liegen in dem die Original-Bilder abgelegt werden (ausreichende Auflösung vorrausgesetzt). Erfolgreich verarbeitete Bilder landen dann im Ordner "images_done" im Skriptordner. Bilder bei denen keine Nummer (bei dir sollen sie ja mit "00" beginnen) gefunden wurde werden dann im Ordner "images_failed" im Skriptordner abgelegt. Der Dateifilter steht auf *.jpg. Ordner und Dateifilter lassen sich in den Variablen im Kopf des Skriptes an eigene Bedürfnisse anpassen.
Hinweis: Das Skript ist deswegen etwas länger da der obige Teil des Skripts hauptsächlich Code für das Herunterladen der benötigten DLLs und Tesseract Bibliotheken von Nuget und Git beinhaltet diese werden nur einmalig vom Skript in den Skriptordner heruntergeladen und bei erneutem Ausführen des Skripts einfach nur noch vom lokalen Ordner geladen). Habe das so geschrieben damit es hier jeder Anwender es ohne große Zusammensucherei ausprobieren kann.

Natürlich muss jeder den Regex der die Nummern extrahiert an seine Bedürfnisse anpassen( im Moment extrahiert es allein stehende Nummern beginnend mit "00" so wie du oben wolltest.) Die Zeile die dies macht ist diese
$number = [regex]::match($text,'\b00\d+\b').Value  
Zusätzlich kann man mit dem zweiten Parameter der Funktion Process spielen sollte die Nummern nicht korrekt erkannt werden. Dieser bietet die Option den Seitenaufbau vorab festzulegen. Alternativ kann man hier auch einen anderern Konstruktor der Funktion nutzen um bspw. die Erkennung nur auf einen bestimmten Bereich eines Bildes einzuschränken.
https://tesseract.patagames.com/help/html/T_Patagames_Ocr_Enums_PageSegM ...
$page = $ocr.Process($img,[Tesseract.PageSegMode]::SingleBlock)

Herunterladen könnt Ihr euch das Skript hier

back-to-topocr_and_rename_619771.zip


Viel Spaß damit.
Grüße Uwe
Member: cse
cse Nov 09, 2020 at 10:41:02 (UTC)
Goto Top
Hallo Uwe,

das ist ja der Hammer, ich weiß gar nicht was ich sagen soll face-smile
Bin sehr begeistert von dem Skript.

Habe noch eingebaut dass er Dateien noch die Uhrzeit anfügt, falls es mal mehrere Bilder gib von einer Palette gibt, vorerst nur zum Testen, mal sehen was sich besser macht als die Uhrzeit (ggf. Zufallszahl oder Buchstabenkombi).

Aber großartig wie das funktioniert! face-smile

VG
CSE
Member: colinardo
Solution colinardo Nov 09, 2020 updated at 11:02:05 (UTC)
Goto Top
Zitat von @cse:
das ist ja der Hammer, ich weiß gar nicht was ich sagen soll face-smile
Bin sehr begeistert von dem Skript.
Freut mich das es dir hilft face-smile.
Habe noch eingebaut dass er Dateien noch die Uhrzeit anfügt, falls es mal mehrere Bilder gib von einer Palette gibt, vorerst nur zum Testen, mal sehen was sich besser macht als die Uhrzeit (ggf. Zufallszahl oder Buchstabenkombi).
Ja, den Part hatte ich erst mal noch mangels Workflow-Kenntnis weggelassen, kann ich aber gerne noch oben ergänzen, z.B. auch mit Hochzählen und Anhängen eines Zählers.

-edit- ist oben im Code ergänzt.

Grüße Uwe
Member: cse
cse Nov 09, 2020 at 11:27:45 (UTC)
Goto Top
Sehr schön, funktioniert prima face-smile

$dst = "$target\$number_$cnt$($_.Extension)"  

an der Stelle brauchen wir noch eine kleine Änderung:

$dst = "$target\$number-$cnt$($_.Extension)"  

also der Unterstrich vor $cnt zu einem minus, damit er es anhängt. Sonst heißt der neue Dateiname nur wie der Counter (1 oder 2, etc), könntest du ja noch anpassen im Code, für andere Interessierte Mitforisten.

Vielen Dank für deine Unterstützung!
Member: colinardo
Solution colinardo Nov 09, 2020 updated at 11:33:48 (UTC)
Goto Top
Zitat von @cse:

Sehr schön, funktioniert prima face-smile

$dst = "$target\$number_$cnt$($_.Extension)"  

an der Stelle brauchen wir noch eine kleine Änderung:

$dst = "$target\$number-$cnt$($_.Extension)"  

also der Unterstrich vor $cnt zu einem minus, damit er es anhängt. Sonst heißt der neue Dateiname nur wie der Counter (1 oder 2, etc), könntest du ja noch anpassen im Code, für andere Interessierte Mitforisten.

Vielen Dank für deine Unterstützung!

Ups sorry, aber der Unterstrich kann trotzdem bleiben wenn man ihn wünscht indem man geschweifte Klammern um die Variable setzt:
$dst = "$target\${number}_$cnt$($_.Extension)"