Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Stelle aus jpg auslesen via ocr und als pdf speichern mit dem ausgelesenen als Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: jehlenco

jehlenco (Level 1) - Jetzt verbinden

19.05.2014, aktualisiert 13:16 Uhr, 1391 Aufrufe, 9 Kommentare

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:

[2]

- 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:

01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log\log.txt 
11.
set printtxt=%temp%\print.txt 
12.
set printer="HIER BITTE DEN DRUCKERNAMEN EINGEBEN" 
13.
 
14.
TITLE Deliver Stamp Programm  
15.
COLOR F0 
16.
ECHO. 
17.
 
18.
 
19.
REM --------------------------------------- 
20.
REM Abfrage ob sie wirklich Labeln moechten 
21.
REM --------------------------------------- 
22.
 
23.
 
24.
 
25.
:LOOP 
26.
SET Choice= 
27.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
28.
 
29.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
30.
 
31.
ECHO. 
32.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
33.
IF /I '%Choice%'=='N' GOTO REJECTED 
34.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
35.
ECHO. 
36.
GOTO Loop 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage negativ 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
 
45.
:REJECTED 
46.
ECHO Labeln abgebrochen 
47.
ECHO Sie koennen das Programm nun schliessen. 
48.
GOTO END 
49.
 
50.
 
51.
REM --------------------------------------- 
52.
REM Abfrage positiv 
53.
REM --------------------------------------- 
54.
 
55.
 
56.
:ACCEPTED 
57.
SET NEWLINE=^& echo. 
58.
ECHO Beginn des Labelns 
59.
 
60.
 
61.
REM --------------------------------------- 
62.
REM Konvertierung der PDFs 
63.
REM --------------------------------------- 
64.
 
65.
 
66.
 
67.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
68.
Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien 
69.
 
70.
 
71.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt 
72.
Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert 
73.
 
74.
 
75.
REM --------------------------------------- 
76.
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) 
77.
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 
78.
REM --------------------------------------- 
79.
 
80.
 
81.
REM --------------------------------------- 
82.
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%) 
83.
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. 
84.
REM --------------------------------------- 
85.
 
86.
 
87.
REM --------------------------------------- 
88.
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) 
89.
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. 
90.
REM --------------------------------------- 
91.
 
92.
Echo. 
93.
 
94.
 
95.
REM --------------------------------------- 
96.
REM Abfrage positiv - Endnachricht 
97.
REM --------------------------------------- 
98.
 
99.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
100.
 
101.
 
102.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
103.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
104.
 
105.
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% 
106.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i)  
107.
 
108.
 
109.
110.
 
111.
GOTO END 
112.
 
113.
:END 
114.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
115.
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 
116.
 
117.
del %ordner1%\p1_*.pdf 
118.
del %ordner1%\*.txt 
119.
del %temptxt% 
120.
del %printtxt%  
121.
del %tempordner1% 
122.
del %tempordner2% 
123.
md print_done\%date% 
124.
move %ordner3%\*.* print_done\%date% 
125.
ECHO.
Und hier ein weiteres Thema zu dem Script:

http://www.administrator.de/content/detail.php?nid=431100&id=238289 ...




Über Hilfe wäre ich sehr Dankbar

Grüße

Maurice aus Celle
Mitglied: Xaero1982
19.05.2014, aktualisiert um 13:55 Uhr
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
Bitte warten ..
Mitglied: rubberman
19.05.2014 um 14:00 Uhr
Hallo jehlenco,

wenn die Dateien bereits die Lieferscheinnummer im Namen haben, warum dann mühsam versuchen dieselbe aus PDF oder Bilddateien zu extrahieren?

Grüße
rubberman
Bitte warten ..
Mitglied: jehlenco
19.05.2014 um 14:13 Uhr
Also wir verwenden folgendes Programm: http://www.abcsoft.de/produkt1.htm

Dieses druckt die Lieferscheine direkt und speichert sie nicht. Es ist jedoch möglich die die Ausgabe auf PDF zu stellen, beispielsweise automatisiert mit http://de.pdfforge.org/ ... Aber dann heißt die Datei leider immernoch nicht wie die Lieferscheinnummer... daher dachte ich daran das Label als JPG auszugeben und via OCR Software (gocr) zu benennen. Wenn man die Datei speichern möchte im DPD Programm dann fragt er bei jeder Datei wie man sie nennen möchte.

Danke im Vorraus
Bitte warten ..
Mitglied: Xaero1982
19.05.2014 um 17:31 Uhr
Sorry, aber hier bin ich raus. Mit dieser "ocr" komm ich nicht klar. Wüsste auch nicht, wie ich da angeben soll, dass nur ein bestimmter Bereich gescannt werden soll. Bei mir scheitert es aber schon an der Eingangsdatei.

Das DPD Tool kann ich nicht testen.

Vielleicht hat ja noch jemand eine Idee.

Gruß
Bitte warten ..
Mitglied: Xaero1982
19.05.2014 um 17:48 Uhr
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:

01.
__cn   E__o___  0__    8_____________o__q___0oo_ln_?        r 
02.
 
03.
 
04.
 
05.
ctul____J           ,   _      r? 
06.
_),cmn_,;_,nJ;_,,_J_!,?'__""-''__"''"   __  ^;0_o;_'0___,o_   _,s 
07.
 
08.
O  lI_6J'_I_Y___r_!     .0  C_  __    'l_' 
09.
_  TL_4r__J_!1__3X_     __0 ___,,9o0,oD_n,L,__ 
10.
0             ___a_0_,__ 0 _? o' ,_ 
11.
______l_u___n__        ____L_   o_   _0o__ 
12.
_',__ J__'m__;^m         '_ v,s_9____ ___  _0o_'_                 ? 
13.
 
14.
tt_i__a______r_       o  __LJ0o _r __0  ' _                 Nh 
15.
_ !J!_'-'-'^__mn-"i!'1w"'^"  _ _ _0'?_L_,  _    __           _ 
16.
t Toti107l_0tC)2l-98_-O     0_',,__ _^  ^ ?c,__          t        h 
17.
_            ß  B   _   ,_  '_o         <-         r 
18.
7            i  _-    ,0i,0D_,^ 
19.
_             __00_^q0_.   00___       h_        _ 
20.
C              ! ^     --_       NiJ 
21.
m            _                 _._       g 
22.
_            ,  __           _r;        fU 
23.
u          _ j_ _ _._ó              % _         0 
24.
_r ___               ' _        0 
25.
l           __-j  9_         q  _  o,        g 
26.
_          __                    _        6 
27.
28.
_  _   _    -c                  h;        _ 
29.
______             0    r;,        hg 
30.
tm_      _  _j             0      _ 
31.
_  __                    _! 
32.
_  Y_  M                     o. 
33.
_   _  __  _                     '         _ 
34.
_  _  U_  _ 
35.
_  y  M_  _f             0              _ 
36.
_   cæ_t  __    _         _              _g 
37.
_•  _  C_  _t    n                        g 
38.
M  _u'___  __t  _  N       a 
39.
r_  ___  Y_  o  _       _ 
40.
=_,d_-_  0h  c 
41.
O_ ____9,z    c_  _  _       _ 
42.
___     0r  _>_0 
43.
_   C_    _____n 
44.
_.;_  t__  -y_-,_ë!;_       b  0__ 
45.
_,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ß
Bitte warten ..
Mitglied: rubberman
20.05.2014 um 11:32 Uhr
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
Bitte warten ..
Mitglied: Xaero1982
26.05.2014 um 16:40 Uhr
Hast du hier inzwischen eine Lösung gefunden?

Gruß
Bitte warten ..
Mitglied: jehlenco
26.05.2014 um 16:46 Uhr
Leider nicht... das Projekt liegt derzeit auf "Eis", leider...

Es muss doch eine Lösung geben das irgendwie in der Art zu speichern?!
Bitte warten ..
Mitglied: Xaero1982
26.05.2014 um 18:06 Uhr
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ß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...