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:
bis hier hin sicher kein Problem
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:
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
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
- 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 619771
Url: https://administrator.de/forum/bilder-anhand-ocr-umbenennen-gern-bezahlsoftware-619771.html
Ausgedruckt am: 02.01.2025 um 20:01 Uhr
11 Kommentare
Neuester Kommentar
Nabend,
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.
cykes
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.[...]
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.
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
EbenfallsCSE
cykes
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
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
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
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
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.
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?Und vor allem bei OCR Erkennung, wer kontrolliert die erkannten Nummern im Nachhinein?
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 ) 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
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
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 ...
Herunterladen könnt Ihr euch das Skript hier
Viel Spaß damit.
Grüße Uwe
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
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
ocr_and_rename_619771.zip
Viel Spaß damit.
Grüße Uwe
Zitat von @cse:
das ist ja der Hammer, ich weiß gar nicht was ich sagen soll
Bin sehr begeistert von dem Skript.
Freut mich das es dir hilft .das ist ja der Hammer, ich weiß gar nicht was ich sagen soll
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).
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
Zitat von @cse:
Sehr schön, funktioniert prima
an der Stelle brauchen wir noch eine kleine Änderung:
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!
Sehr schön, funktioniert prima
$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)"