Show last authors
1 Das //MDX AddOn// für [[iPaper>>doc:Main.Produkte.iPaper.WebHome]] ermöglicht es Dokumente automatisch zu erkennen und mit Briefpapier zu hinterlegen. Diese automatische Verarbeitung wird über die aus dem Dokument ausgelesenen Informationen gesteuert.
2
3 {{box title="Seiten Inhalt"}}
4 {{toc start="1" depth="3"/}}
5 {{/box}}
6
7 = Templates =
8
9 Um die //MDX //Einstellungen konfigurieren zu können muss zuerst ein Template erstellt werden. Templates sind die Voraussetzung um die Dokumente zu erkennen, zu teilen und die gewünschte Information daraus auszulesen. Einem Template können mehrere Layouts zugeordnet werden, die die gleichen Felder enthalten und gleich verarbeitet werden sollen, wobei jedes Layout ein anderes Briefpapier auf das Dokument anwenden kann.
10
11 Es können mehrere Templates angelegt werden. Die Einstellungen werden dabei standardmäßig als PMDX Datei im Briefpapier Ordner (Standard Pfad: //C:\Users\<user>\AppData\Roaming\iPaper.NET\Stationeries//) gespeichert. Templates können dadurch exportiert und z.B. auf einer anderen Arbeitsstation importiert werden um Einstellungen zu transferieren.
12
13 Um z.B. Eingangsrechnungen zu verarbeiten gibt es ein einziges Rechnungs-Template mit den Feldern Firma, Nummer, Datum und Betrag. Pro Lieferant gibt es dann ein Layout (+ Briefpapier) um die unterschiedlichen Rechnungsformulare abzubilden. Layouts werden über Bedingungen erkannt und legen die Felder auf dem Formular fest.
14
15 |[[image:ipaper-konfig-interface-TN.png>>attach:ipaper-konfig-interface.png||target="_blank"]]|[[image:mdx-konfig-interface-TN.png>>attach:mdx-konfig-interface.png||target="_blank"]]
16
17 == Template Funktionen ==
18
19 * Templates werden über Namen verwaltet - Neu anlegen, Kopieren, Umbenennen, Löschen, Vorlage exportieren/importieren, Alle Vorlagen exportieren
20 * Felder hinzufügen, löschen, verschieben hinauf/hinunter
21 * Feld Definition - Name, Typ (Text, Ziffern, Buchstaben, Buchstaben und Ziffern, Barcode), Teilstringsuche
22 * String Aufbereitung - Führende Nullen entfernen, Entfernen von Text oder Zeichen Links/Rechts, Groß- und Kleinschreibung ignorieren, Text ersetzen
23 * Definition - Dezimal und Tausender Trennzeichen - Punkt, Beistrich, Kein
24
25 [[image:neues-template-anlegen-TN.png>>attach:neues-template-anlegen.png||target="_blank"]]
26
27 == Feld Definition ==
28
29 === Felder ===
30
31 Hier werden Felder angelegt und konfiguriert, mit denen bei der Verarbeitung Informationen extrahiert werden. Es können beliebige Felder definiert und im Layout zum Auslesen von Informationen aus Dokumenten verwendet werden. Die Variablen werden mit dem asugelesenen Text belegt und können für die Weiterverarbeitung als Metadaten verwendet werden. Es muss ein Feldname angegeben und ein Typ für das Feld definiert werden.
32
33 [[image:felder-anlegen-TN.png>>attach:felder-anlegen.png||target="_blank"]]
34
35 === String Aufbereitung ===
36
37 Es stehen weitere Optionen pro Feld zur Verfügung um den ausgelesenen Inhalt weiter zu bearbeiten und anzupassen.
38
39 |[[image:string-aufbereitung-text-TN.png>>attach:string-aufbereitung-text.png||target="_blank"]]|[[image:string-aufbereitung-datum-TN.png>>attach:string-aufbereitung-datum.png||target="_blank"]]
40
41 * **Standardwert**
42 \\Im Normalfall können Informationen aus dem Dokument ausgelesen und Feldern zugeordnet werden. Es gibt aber Fälle in denen es nicht möglich ist bestimmte Informationen, die weggeschrieben werden sollen, auszulesen. Zum Beispiel kann es vorkommen, dass bei einer Rechnung, die als PDF vorliegt, der Lieferant für die Gestaltung des Formulars nur Bilder verwendet hat und es daher keinen Bereich gibt über den man den Firmennamen auslesen kann - das Layout aber über andere Kriterien erkannt und eindeutig zugeordnet werden kann. Für den Fall wird das Feld "Firma" nicht auf dem Layout positioniert, kann aber über die "Standardwert" Option mit dem Namen der Firma belegt werden um die Information in weiterer Folge als Variable verwenden zu können.
43
44 * **Regular Expression**
45 \\RegEx Regeln können für jedes Feld definiert werden und ermöglichen eine Aufbereitung und Filterung der extrahierten Feldinhalte, z.B.:
46 "[a,b]+" entspricht "a", "b", "aa", "bbaab", etc.
47 "[0-9]{2,5}" entspricht zwei, drei, vier oder fünf Ziffern in Folge, z.B.: "42" oder "53810", jedoch nicht den Zeichenfolgen "0", "1.1" oder "a1b2"
48 \\Über den RegEx Ausdruck "\d+" können Zahlen eines Feldes zurückgeliefert werden. Wird kein Parameter angegeben, so wird automatisch die "erste der längsten der gefundenen Zahlen "zurückgeliefert". Zum Beispiel der ausgegebene Feldinhalt ist "Seite 15/110", so wird "110" zurückgeliefert. Zusammen mit dem Parameter //Treffer// kann gezielt eine Zahl einer bestimmten Position aus dem String extrahiert werden. Mit dem Parameter = 1 wird die erste in dem String gefundene Zahl ("15") mit = 2 wird die zweite ("110") usw. zurückgeliefert.
49 \\Es ist möglich die RegEx Verarbeitung in Kombination mit den String Aufbereitungs Funktionen (Teilstring, Entferne Links/Rechts, etc.) zu verwenden. Dabei wird immer die RegEx Verarbeitung ausgeführt und anschließend die weiteren Aufbereitungen.
50
51 * **Entferne Links/Rechts als Zeichen/Text**
52 \\Diese Option entfernt Zeichen oder auch ganzen Text aus dem extrahierten Inhalt, entweder von links nach rechts oder umgekehrt. Es können die zu entfernenden Zeichen vorausgewählt werden.
53 Optional kann hierbei die Groß - und Kleinschreibung ignoriert werden.
54 Es gibt auch Funktionen um Leerzeichen und führende Nullen aus dem ausgelesenen Inhalt zu entfernen.
55
56 * **Text ersetzen**
57 \\Mit dieser Funktion können Texte vordefiniert werden nach denen gesucht werden soll und Texte durch die sie ersetzt werden sollen. Der ausgelesene Feldinhalt wird nach diesen Texten durchsucht - werden sie gefunden, so werden sie durch den angegebenen Text ersetzt.
58
59 === Barcode Erkennung ===
60
61 Bei den Feldern gibt es auch die Möglichkeit "Barcode" auszuwählen. Damit lassen sich Barcodes innerhalb des markierten Feldbereichs erkennen. Der Barcodewert wird als Feldinhalt zurückgeliefert. Über die Barcode Einstellungen kann festgelegt werden, welche Barcode Typen erkannt werden sollen. Die Barcode Erkennung wird auch direkt bei der Feldpositionierung und bei der Test Funktion ausgeführt. Damit ist gleich ersichtlich ob der Barcode erkannt wird bzw. welchen Wert der Barcode aufweist.
62
63 Die Auswahl der Barcode Typen für die Erkennung ist pro Template und Feld individuell möglich. Dadurch können mit einem Layout mehrere verschiedene Barcode Typen aus einem Dokument ausgelesen werden.
64
65 [[image:barcode-einstellungen-TN.png>>attach:barcode-einstellungen.png||target="_blank"]]
66
67 == Bedingungen ==
68
69 Bedingungen werden über Felder und über logische Verknüpfungen sowie über Text und Teilstring aufgebaut. Damit werden Teilung und Layout Erkennung gesteuert.
70
71 Um eine Bedingung zu erstellen muss der Knoten "Conditions" im Bedingungs-Feld ausgewählt sein. Ist er ausgewählt kann ein Bedingung oder eine Verknüpfung (UND, ODER) hinzugefügt werden. Bedingungen bzw. Verknüpfungen werden immer unter dem ausgewählten Knoten eingefügt.
72
73 === Dokument Teilen ===
74
75 Mit dieser Funktion kann der Anfang eines neuen Dokuments innerhalb eines Gesamtdokuments erkannt werden und ein anderes Briefpapier hinterlegt werden. Es gibt drei verschiedene Kriterien nach denen das Dokument "geteilt" werden kann.
76
77 1. Das Dokument alle //X// Seiten teilen
78 Bei dieser Option wird fix definiert in welchen Intervallen das Dokument geteilt werden soll.
79 Wird zum Beispiel "2" als Parameter angegeben, wird das Dokument nach jeder zweiten Seite geteilt.
80 1. Teilen des Dokuments bei Änderung des Bereichsinhaltes
81 Das Dokument wird jedes Mal geteilt, wenn sich der ausgelesene Inhalt des Bereichs ändert. Dafür muss ein Feld (Bereich) gewählt werden, dessen Inhalt bestimmt wann das Dokument geteilt wird. Es erscheint ein Warnsymbol neben der Option falls kein Feld ausgewählt ist.
82 1. Teilen über Bedingung
83 Teilt das Dokument über eine Bedingung. Bei der Bedingungsart muss das Kästchen "Teilen" angehakt sein. Ist dieses nicht angehakt oder keine Bedingung definiert, erscheint ein Warnsymbol neben der Option.
84
85 Zusätzlich können nach dem Teilen eines Dokuments, leere Seiten oder eine benutzerdefinierte Anzahl an Seiten nach der Trennseite entfernt werden.
86
87 [[image:bedingung-teilen-feld-TN.png>>attach:bedingung-teilen-feld.png||target="_blank"]]
88
89 === Bedingung konfigurieren ===
90
91 Eine Bedingung besteht aus folgenden Teilen:
92
93 1. TYPE
94 Beschreibt die Bedingungsart, also entweder Teilen (S), Erkennen (D) oder beides (DS).
95 1. AREA
96 Beinhaltet den Bereich der überprüft werden soll. Hier kann aus den angelegten Feldern (Bereichen) gewählt werden.
97 1. TEXT
98 Hier kann ein Text definiert werden, der mit dem ausgelesenen Feldinhalt (AREA) verglichen wird und wenn er übereinstimmt die Bedingung erfüllt. Es ist auch möglich hierfür eine Teilstringsuche zu verwenden.
99 1. PAGES
100 Legt fest wie viele Seiten des Dokuments für die Bedingung überprüft werden sollen.
101 1. LAYOUT
102 Definiert das Layout (inklusive dem zugehörigen Briefpapier) das verwendet werden soll, wenn die Bedingung erfüllt wird.
103
104 Bedingungen können mit //UND //und //ODER //verknüpft werden.
105 Der Button "Aufräumen" entfernt unvollständige Strukturen.
106
107 |[[image:bedingung-konfiguration-TN.png>>attach:bedingung-konfiguration.png||target="_blank"]]|[[image:bedingung-und-oder-verknüpfung-TN.png>>attach:bedingung-und-oder-verknüpfung.png||target="_blank"]]
108
109 == Einstellungen ==
110
111 === Leere Seiten erkennen und entfernen ===
112
113 Beim Scan von Dokumenten kann es bei doppelseitigen Scans vorkommen, dass leere Seiten (oder teilweise bedruckte Rückseiten) im Dokument enthalten sind. Nicht immer verfügen Scanner über eine Funktion um diese automatisch beim Scanvorgang zu entfernen. Für die Weiterverarbeitung und Archivierung sind Leerseiten störend und sollten entfernt werden können. Mit dem //MDX AddOn// gibt es eine Funktion um leere Seiten automatisch zu erkennen und zu entfernen.
114
115 Als Kriterium für die Erkennung einer leeren Seite dient ein Schwellwert, der standardmäßig auf 95% gestellt ist. Wir empfehlen einen Wert zwischen 95 und 98%. Der Wert gibt den prozentuellen Anteil der "weißen Pixel" auf einer Seite an. Eine Seite wird als "Leer" identifiziert, sobald der Anteil der weißen Pixel größer/gleich dem eingestellten Wert (z.B.: 95%) ist.
116
117 Zusätzlich zum Schwellwert kann auch die Information über im Hintergrund vorhandenen Text als Kriterium herangezogen werden. Dafür muss die Option "Leere Seite aus PDF nicht entfernen falls diese Text enthält" aktiv sein. Eine Seite, auf der im Hintergrund Text vorhanden ist, der jedoch nicht "sichtbar" ist, wird dadurch nicht aus dem PDF Dokument entfernt.
118
119 |[[image:template-einstellungen-TN.png>>attach:template-einstellungen.png||target="_blank"]]|[[image:template-einstellungen-filled-TN.png>>attach:template-einstellungen-filled.png||target="_blank"]]
120
121 = Layouts =
122
123 Zuerst muss ein Template erstellt werden, das die Felder und Feldtypen festlegt. Dann werden Layouts, die mit diesem Template verwendet werden, erstellt.
124 Z.B.: Die Feld- und Datenstruktur für Eingangsrechnungen unterschiedlicher Lieferanten ist immer gleich - das Aussehen der unterschiedlichen Rechnungen, die Position und Anordnung der Felder ist jedoch immer verschieden. Also muss ein Template für Eingangsrechnungen angelegt werden und dann pro Lieferant ein Layout.
125
126 Einem Template kann ein oder mehrere Layouts zugeordnet werden, die dieselben Felder verwenden. Als Layout wird ein Briefpapier ausgewählt, das diesem Layout fix zugewiesen wird. Sind mehrere verschiedene Layouts einem Template zugeordnet, kann über Feldinhalte und Bedingungen, ein Briefpapier automatisch einem Dokument zugeordnet werden.
127
128 Um die im Template definierten Felder positionieren zu können muss zuerst ein PDF als Prototyp geladen werden. Wichtig ist hierbei, dass die Datei Text als Text und nicht als Bild enthält, da nur Text extrahiert, jedoch keine OCR (Texterkennung) durchgeführt werden kann.
129
130 Ist ein PDF Prototyp gewählt, so können die Felder per Drag&Drop auf das Dokument gezogen werden. Der Inhalt, der von einem platzierten Feld ausgelesen wird, wird links unten angezeigt, wenn das Feld ausgwählt ist. Das ermöglicht sofortige Rückmeldung ob der Text richtig und vollständig ausgelesen wird.
131
132 |[[image:layout-hinzufügen-TN.png>>attach:layout-hinzufügen.png||target="_blank"]]|[[image:layout-interface-TN.png>>attach:layout-interface.png||target="_blank"]]|[[image:layout-felder-platziert-TN.png>>attach:layout-felder-platziert.png||target="_blank"]]|[[image:layout-prototyp-auswahl-TN.png>>attach:layout-prototyp-auswahl.png||target="_blank"]]
133
134 == Anker Felder (Suchfelder) ==
135
136 Anker Felder werden benötigt um Referenzstellen in einem Dokument zu finden und andere Felder absolut darauf zu beziehen. Es gibt Informationen, die sich weder immer wieder an der gleichen Stelle noch auf der gleichen Seite befinden. Ein typisches Beispiel ist der Endbetrag einer Rechnung - dieser kann sich auf der ersten, der letzten aber auch auf einer x-beliebigen Seite befinden. Zusätzlich kann je nach Anzahl der Rechnungspositionen der Endbetrag vertikal variieren. Eine fixe Definition würde hier nicht helfen. Eine weitere Herausforderung stellen gescannte Belege dar. Hier kann von Dokument zu Dokument jedes Feld horizontal und vertikal "wandern" - je nachdem wie das Dokument in den Scanner eingelegt und gescannt wurde, können sich Verschiebungen und Verzerrungen ergeben. Eine fixe Positionsdefinition würde eine hohe Fehlerrate verursachen. Um in diesen Fällen die Felder zuverlässig auslesen und verarbeiten zu können, wurden die //Anker Felder //implementiert. Diese Felder sind Fixpunkte auf welche sich andere Felder beziehen können, z.B.: "Gesamtsumme", "Rechnungsendbetrag", usw.
137
138 Pro Layout können ein oder mehrere Ankerfelder definiert werden auf welche sich andere Felder beziehen können. Die Suche nach den Ankerfeldern kann über Teilstrings oder fixe Texte erfolgen und es kann festgelegt werden ob alle oder nur bestimmte Seiten durchsucht werden sollen.
139
140 Es kann speziell bei der Teilstringsuche vorkommen, dass der Begriff auf der Seite nicht die erste, sondern eine weitere Fundstelle die gesuchte Position ist und es keine andere eindeutige Möglichkeit gibt, das Feld über einen Suchstring zu positionieren. Deswegen erfolgt die Ankerfeldsuche standardmäßig von der Feldposition der Vorlage aus. Der nächstgelegene passende String wird als Position für das Ankerfeld genommen.
141
142 === Unschärfe ===
143
144 Bei der Option "Unschärfe" für Ankerfelder kann definiert werden, für wie viele Zeichen eine Abweichung vom angegebenen String noch akzeptiert wird. Die Option kann nicht in Kombination mit der Teilstringsuche verwendet werden.
145
146 === Treffer ===
147
148 Ist die Option "Treffer" aktiviert und eine Nummer angegeben, so wird die Seite von oben nach unten und von links nach rechts nach dem Ankertext durchsucht. Die Zahl gibt an, der wievielte Treffer als Position für das Ankerfeld genommen wird. Damit kann also auch z.B. der zweite Treffer auf einer Seite als Ankerfeld Position gefunden werden.
149
150 === Auto-Scale ===
151
152 Speziell bei gescannten Dokumenten kann es vorkommen, dass die Inhalte der Dokumente auf der Seite nicht nur in ihrer Positionierung horizontal bzw. vertikal variieren, sondern Dokumente können auch unterschiedliche Skalierungen und Größen aufweisen. Zum Beispiel falls ein gescannter Ausdruck mit unterschiedlichen Skalierungen erstellt wurde. Die relative Position und Größe der auszulesenden Felder zueinander ist prozentuell zwischen den Dokumenten zwar gleich, die absoluten Werte sind aber unterschiedlich. Das Layout für das Auslesen der Felder wird an Hand eines typischen Dokuments erstellt und berücksichtigte bisher nur die absoluten Abstände und Größen der Felder zueinander. Ein Dokument das also z.B. um 10% kleiner auf der A4 Seite erscheint, konnte so nicht verarbeitet werden, da die Felder im Vergleich zum erstellten Layout sowohl von der Position als auch von der Größe nicht passen. Dafür haben wir jetzt eine Auto-Scale Funktion implementiert, welche in der Lage ist solche unterschiedlichen Skalierungen in einem bestimmten Umfang automatisch auszugleichen.
153
154 **Was ist zu beachten:**
155
156 * Das Layout sollte von der "größten" Ausprägung aus erstellt werden.
157 * Es muss ein Ankerfeld verwendet werden, das ohne Teilstringsuche gefunden werden kann. Zum Beispiel über den String "Rechnung" nicht jedoch über "*Rechnung*".
158 * Die Option "Auto-Scale" muss aktiviert sein.
159
160 == Test Funktion ==
161
162 Für das //MDX AddOn// gibt es eine integrierte Test Funktion mit der das aktuelle Template entweder mit der geladenen oder mit einer frei wählbaren PDF Datei getestet werden kann. Dabei werden die Feldnamen und die extrahierten Textinhalte angezeigt. Der "Test" Button ermöglicht es zu überprüfen, ob das aktuelle Template erkannt und bei welchen Seiten die PDF Datei geteilt werden würde. Es wird auch der Name des über die D-Bedingung identifizierten Layouts angezeigt. Dadurch kann festgestellt werden ob ein Layout, sowie welches mit dem getesteten Dokument erkannt wird.
163
164 Bei der Testfunktion werden nicht nur die aus dem PDF extrahierten sondern auch die durch die Felddefinitionen aufbereiteten Feldinhalte, die von //MDX// für die Weiterverarbeitung verwendet werden, angezeigt.
165
166 |[[image:test-funktion-TN.png>>attach:test-funktion.png||target="_blank"]]|[[image:test-funktion-auslesen-TN.png>>attach:test-funktion-auslesen.png||target="_blank"]]|[[image:test-funktion-teilen-TN.png>>attach:test-funktion-teilen.png||target="_blank"]]
167
168 = Beispiele =
169
170 == Video - Inhalt auslesen und als Dateiname verwenden ==
171
172 {{video url="https://www.youtube.com/watch?v=nMVd1QM9inA" width="600px"/}}
173
174 == Video - Briefpapier automatisch auswählen und neues Dokument erkennen ==
175
176 {{video url="https://www.youtube.com/watch?v=p6eufF49U7A" width="600px"/}}
177
178 == Briefpapier an Hand von extrahierten Informationen automatisch auswählen ==
179
180 1. Im iPaper Konfigurationsfenster die Option //"Briefpapier automatisch auswählen"// anhanken.
181 Ist bereits ein Briefpapier gewählt, so wird dieses durch PDFmdx übersteuert.
182
183 1. Mit einem Klick auf den //"Konfiguriere..."// Button das Konfigurationsfenster für //MDX// öffnen.
184
185 1. Neues Template erstellen
186 Template wird als PMDX Datei im Briefpapier Ordner gespeichert.
187
188 1. Gewünschte Anzahl an Feldern hinzufügen
189 Den Feldern einen Namen und einen Typ (Text für die meisten Fälle ausreichend) zuweisen.
190
191 1. Layout hinzufügen
192 Jedes Briefpapier das in diesem Template verwendet werden soll, muss als Layout hinzugefügt werden.
193
194 1. PDF Prototyp laden
195 Eine PDF Datei als Muster/Vorlage laden, an Hand der die Positionen für die Text Extraktion bestimmt werden.
196
197 1. Felder platzieren (muss für jedes Layout seperat durchgeführt werden)
198 Felder per Drag&Drop auf den auszulesenden Text ziehen und die Größe des Feldes anpassen.
199 Der ausgelesene Text wird links unten angezeigt.
200
201 1. Um die Bedingung zu konfigurieren auf den Tab //Template / Bedingungen// wechseln
202 Den Button "Conditions" anklicken und eine ODER Verknüpfung hinzufügen.
203 "ODER" Button auf rechter Seite
204
205 1. Die hinzugefügte ODER Verknüpfung auswählen und eine Bedingung hinzufügen
206 "Bedingung" Button auf rechter Seite
207
208 1. Als Bedingungsart "Erkennen" auswählen
209 Für den //Bereich// ein Feld auswählen, dessen Inhalt entscheiden soll welches Briefpapier hinterlegt wird.
210 Unter //Layout// das Briefpapier (Layout) wählen das, wenn diese Bedingung zutrifft, hinterlegt werden soll.
211 Im Feld //Text// einen Text eingeben, der mit dem ausgelesenen Inhalt verglichen wird und bei einer Übereinstimmung die Bedingung erfüllt.
212 Im Feld //Seiten// wird festgelegt, wie viele Seiten des Dokuments durchsucht werden sollen. Um alle Seiten des Dokuments zu durchsuchen "1-$" eingeben.
213
214 1. Punkt 9 und 10 für jedes Layout durchführen und die Bedingungen dem Layout entsprechend anpassen.
215
216 1. Ein PDF Dokument über die iPaper Drop Zone verarbeiten.
217
218
XKey Wiki 2018