Stelle aus jpg auslesen via ocr und als pdf speichern mit dem ausgelesenen als Dateinamen
Moin Moin liebe Forumianer,
ich bastle derzeit immernoch an meinem Labelprogramm und stehe nun vor dem letzten großen Problem.
Um das ganze Projekt einmal kurz zu erläutern hier eine grobe Skizze:
[1]
- Ich habe einen Windows Server wo Microsoft Navision drauf läuft, dieser speichert Lieferscheine im PDF Format in einen Ordner namens "deliver". Der Dateiname hierbei ist die Lieferscheinnummer
- Auf dem Windows Server läuft ausserdem ein Programm von DPD das automatisiert und synchronisiert Labels aus Navision heraus erstellt. Bisher Druckt das Programm dann morgens munter die Labels und die Mitarbeiter im Lager müssen diese Dann ausschneiden zuweisen und in das Plastikfach am Karton vor den Lieferschein legen.
Zusammen mit einem Mitglied hier aus dem Forum habe ich ein Script basierend auf einer Batch Datei das folgendes macht:
ORDNER A (Alle Dateien sind PDF's und fortlaufenden Dateinamen, ( Lieferscheinnummer))
ORDNER B (Alle Dateien sind PDF's und fortlaufenden Dateinamen, ( Lieferscheinnummer gleich wie bei Ordner A)) ->
Hier wird nun Datei 001 aus Ordner A mit der Datei aus Ordner B 001 auf der ersten Seite Wassergemarkt. Sinn des ganzen ist es das oben auf dem Lieferschein das DPD Label ist und die Mitarbeiter den schein lediglich falten müssen und in das Plastik Fach am Karton stecken müssen ohne etwas auszuschneiden bzw zuzuweisen. Anschließend erstellt das Batch Script eine Log und zeichnet auf was sie getan hat und druckt die fertig erstellten Datei(en). Nach erfolgreichem Druck werden dann auch beide Ordner (A,B) gelöscht und die zusammengefügte Datei wird in einen Ordner mit Datum verschoben als Backup.
Nun aber zu meinem Problem, ich muss dem DPD Programm irgendwie sagen das er die Labels automatisiert speichert in einer Datei die den des Lieferscheins hat, dieser steht immer an der gleichen Stelle auf dem Label.
Mit GOCR oder so könnte mann das ganze auslesen und speichern via BAT oder?
Hier nochmal der Link zum aktuellen Script:
Und hier ein weiteres Thema zu dem Script:
Zahl aus PDF auslesen und automatisch speichern
Über Hilfe wäre ich sehr Dankbar
Grüße
Maurice aus Celle
ich bastle derzeit immernoch an meinem Labelprogramm und stehe nun vor dem letzten großen Problem.
Um das ganze Projekt einmal kurz zu erläutern hier eine grobe Skizze:
[1]
- Ich habe einen Windows Server wo Microsoft Navision drauf läuft, dieser speichert Lieferscheine im PDF Format in einen Ordner namens "deliver". Der Dateiname hierbei ist die Lieferscheinnummer
- Auf dem Windows Server läuft ausserdem ein Programm von DPD das automatisiert und synchronisiert Labels aus Navision heraus erstellt. Bisher Druckt das Programm dann morgens munter die Labels und die Mitarbeiter im Lager müssen diese Dann ausschneiden zuweisen und in das Plastikfach am Karton vor den Lieferschein legen.
Zusammen mit einem Mitglied hier aus dem Forum habe ich ein Script basierend auf einer Batch Datei das folgendes macht:
ORDNER A (Alle Dateien sind PDF's und fortlaufenden Dateinamen, ( Lieferscheinnummer))
ORDNER B (Alle Dateien sind PDF's und fortlaufenden Dateinamen, ( Lieferscheinnummer gleich wie bei Ordner A)) ->
Hier wird nun Datei 001 aus Ordner A mit der Datei aus Ordner B 001 auf der ersten Seite Wassergemarkt. Sinn des ganzen ist es das oben auf dem Lieferschein das DPD Label ist und die Mitarbeiter den schein lediglich falten müssen und in das Plastik Fach am Karton stecken müssen ohne etwas auszuschneiden bzw zuzuweisen. Anschließend erstellt das Batch Script eine Log und zeichnet auf was sie getan hat und druckt die fertig erstellten Datei(en). Nach erfolgreichem Druck werden dann auch beide Ordner (A,B) gelöscht und die zusammengefügte Datei wird in einen Ordner mit Datum verschoben als Backup.
Nun aber zu meinem Problem, ich muss dem DPD Programm irgendwie sagen das er die Labels automatisiert speichert in einer Datei die den des Lieferscheins hat, dieser steht immer an der gleichen Stelle auf dem Label.
Mit GOCR oder so könnte mann das ganze auslesen und speichern via BAT oder?
Hier nochmal der Link zum aktuellen Script:
@echo off & setlocal
set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log\log.txt
set printtxt=%temp%\print.txt
set printer="HIER BITTE DEN DRUCKERNAMEN EINGEBEN"
TITLE Deliver Stamp Programm
COLOR F0
ECHO.
REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------
:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED
IF /I '%Choice%'=='N' GOTO REJECTED
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop
REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------
:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END
REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------
:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns
REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%
Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt
Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert
REM ---------------------------------------
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk %ordner1%\%%x cat 1 output %ordner1%\p1_%%x) else (if %%i == 1 copy %ordner1%\%%x %ordner1%\p1_%%x)
Echo Datadump-Dateien durchsucht nach "NumberOfPages". Wenn die PDF mehr als eine Seite hat wird die Datei gesplitted, sonst nur kopiert wegen dem gleichen Namen
REM ---------------------------------------
REM ---------------------------------------
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%)
Echo Wenn die Datei aus %ordner1% in %ordner2% existiert sollen diese Dateien mit pdftk in eine temporäre Datei zusammengeführt werden und ein Eintrag in der Datei %susccess% erstellt werden.
REM ---------------------------------------
REM ---------------------------------------
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk A=%ordner3%\temp_stamped_document_%%x B=%ordner1%\%%x cat A1 B2-end output %ordner3%\stamped_document_%%x && del %ordner3%\temp_stamped_document_%%x) else (ren %ordner3%\temp_stamped_document_%%x stamped_document_%%x)
Echo Hier wird erneut die Anzahl der Seiten geprüft. Wenn diese größer als 1 ist wird mit pdftk die temporäre Datei, die aus der Datei aus %ordner1% und der Datei aus %ordner2% besteht, mit dem Rest, also ab Seite 2 der Datei aus %ordner1% zusammen geführt. Wenn die Seitenzahl 1 ist wird die temporäre Datei lediglich umbenannt.
REM ---------------------------------------
Echo.
REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && del %ordner1%\p1_%%a && echo Die Dateien %ordner1%\%%a und %ordner2%\%%i wurden am %date% um %time% gelöscht>>%success%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i)
)
GOTO END
:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe
del %ordner1%\p1_*.pdf
del %ordner1%\*.txt
del %temptxt%
del %printtxt%
del %tempordner1%
del %tempordner2%
md print_done\%date%
move %ordner3%\*.* print_done\%date%
ECHO.
Und hier ein weiteres Thema zu dem Script:
Zahl aus PDF auslesen und automatisch speichern
Über Hilfe wäre ich sehr Dankbar
Grüße
Maurice aus Celle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 238491
Url: https://administrator.de/contentid/238491
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
9 Kommentare
Neuester Kommentar
HI,
was mir noch nicht ganz klar ist.
Wo landen denn die Labels? Ich dachte die landen direkt als PDF in dem Labelordner?
Werden die direkt gedruckt von diesem Programm?
Das würde aber bedeuten man muss den Druck abfangen? Bzw. der Druckauftrag wird doch sicher unter der Lieferscheinnummer laufen oder? Dann wäre es doch das einfachste diese mit dem PDF Creator abzufangen und automatisch in dem Ordner Label speichern zu lassen und dann wie gehabt mit dem Script...
Bekommst du raus wie die Druckaufträge heißen?
Gruß
PS: In "Unserem" Skript kannst du die Echo's unter den Forschleifen auch mal mit REM oder :: auskommentieren. Sind nur für dich zur Erklärung gedacht gewesen
was mir noch nicht ganz klar ist.
Wo landen denn die Labels? Ich dachte die landen direkt als PDF in dem Labelordner?
Werden die direkt gedruckt von diesem Programm?
Das würde aber bedeuten man muss den Druck abfangen? Bzw. der Druckauftrag wird doch sicher unter der Lieferscheinnummer laufen oder? Dann wäre es doch das einfachste diese mit dem PDF Creator abzufangen und automatisch in dem Ordner Label speichern zu lassen und dann wie gehabt mit dem Script...
Bekommst du raus wie die Druckaufträge heißen?
Gruß
PS: In "Unserem" Skript kannst du die Echo's unter den Forschleifen auch mal mit REM oder :: auskommentieren. Sind nur für dich zur Erklärung gedacht gewesen
Gut, http://txpress.blogspot.de/2008/10/extract-text-from-scanned-images-of. ...
Anhand dieser Beschreibung hab ich mal den Lieferschein vom letzten mal umgewandelt und es ist wie ich es mir dachte unbrauchbar:
Ich denke das kannst du so vergessen ... schreibe den Hersteller der Software an und frage, ob man den Druck benennen kann mit dem Namen des Liferscheins.
Gruß
Anhand dieser Beschreibung hab ich mal den Lieferschein vom letzten mal umgewandelt und es ist wie ich es mir dachte unbrauchbar:
__cn E__o___ 0__ 8_____________o__q___0oo_ln_? r
ctul____J , _ r?
_),cmn_,;_,nJ;_,,_J_!,?'__""-''__"''" __ ^;0_o;_'0___,o_ _,s
O lI_6J'_I_Y___r_! .0 C_ __ 'l_'
_ TL_4r__J_!1__3X_ __0 ___,,9o0,oD_n,L,__
0 ___a_0_,__ 0 _? o' ,_
______l_u___n__ ____L_ o_ _0o__
_',__ J__'m__;^m '_ v,s_9____ ___ _0o_'_ ?
tt_i__a______r_ o __LJ0o _r __0 ' _ Nh
_ !J!_'-'-'^__mn-"i!'1w"'^" _ _ _0'?_L_, _ __ _
t Toti107l_0tC)2l-98_-O 0_',,__ _^ ^ ?c,__ t h
_ ß B _ ,_ '_o <- r
7 i _- ,0i,0D_,^
_ __00_^q0_. 00___ h_ _
C ! ^ --_ NiJ
m _ _._ g
_ , __ _r; fU
u _ j_ _ _._ó % _ 0
_r ___ ' _ 0
l __-j 9_ q _ o, g
_ __ _ 6
_
_ _ _ -c h; _
______ 0 r;, hg
tm_ _ _j 0 _
_ __ _!
_ Y_ M o.
_ _ __ _ ' _
_ _ U_ _
_ y M_ _f 0 _
_ cæ_t __ _ _ _g
_• _ C_ _t n g
M _u'___ __t _ N a
r_ ___ Y_ o _ _
=_,d_-_ 0h c
O_ ____9,z c_ _ _ _
___ 0r _>_0
_ C_ _____n
_.;_ t__ -y_-,_ë!;_ b 0__
_,tmj_2 to,___i!ô 0 ____
Ich denke das kannst du so vergessen ... schreibe den Hersteller der Software an und frage, ob man den Druck benennen kann mit dem Namen des Liferscheins.
Gruß
Hallo jehlenco.
Gibt es denn keine andere Möglichkeit den Lieferschein mit dem Ausdruck zu verheiraten?
In welcher Reihenfolge werden die Lieferscheine verarbeitet (Name, Datum etc.)? Anhand des Timestamps der Dateien sollte doch dann eine Zuordnung erfolgen können. Vielleicht kann man das Labelprogramm auch einzeln mit den Lieferscheinen füttern. Dann ist auch klar welches Label als Output kommt.
Grüße
rubberman
Gibt es denn keine andere Möglichkeit den Lieferschein mit dem Ausdruck zu verheiraten?
In welcher Reihenfolge werden die Lieferscheine verarbeitet (Name, Datum etc.)? Anhand des Timestamps der Dateien sollte doch dann eine Zuordnung erfolgen können. Vielleicht kann man das Labelprogramm auch einzeln mit den Lieferscheinen füttern. Dann ist auch klar welches Label als Output kommt.
Grüße
rubberman
Also das mit dem Auslesen aus dem Druck kannst du vergessen.
Wie gesagt: Das beste wäre es wenn du den Hersteller anschreibst und fragst, ob es eine Möglichkeit gibt diesen Druck als PDF zu speichern bzw. der Dateiname vorgegeben wird in Form der Lieferscheinnummer.
Ich kann das Programm wie gesagt leider nicht testen, da mir zum Betrieb die entsprechenden Dateien fehlen.
Gruß
Wie gesagt: Das beste wäre es wenn du den Hersteller anschreibst und fragst, ob es eine Möglichkeit gibt diesen Druck als PDF zu speichern bzw. der Dateiname vorgegeben wird in Form der Lieferscheinnummer.
Ich kann das Programm wie gesagt leider nicht testen, da mir zum Betrieb die entsprechenden Dateien fehlen.
Gruß