scandor
scandor ist ein Tool, dass das Scannen, Erkennen und Ablegen von Dokumenten so einfach wie möglich macht. Die Oberfläche verfügt nur über die nötigsten Buttons für diesen Workflow. In der Regel besteht der gesamte Ablage Prozess aus wenigen Schritten. z.B.
- Scan anklicken
- Dokument wird automatisch erkannt
- Speichern/ablegen bestätigen
Über die Konfiguration bestimmen Sie wie die Dokumente erkannt werden, und in welche Verzeichnisse sie gespeichert werden sollen. Siehe dazu Abschnitt Konfiguration
Das Programm aktualisiert sich bei Bedarf automatisch.
scandor ist frei für nicht kommerzielle Nutzung.
Konfiguration
Über die Konfigurationsdatei docTypes.xml bestimmen Sie wie Dokumente erkannt werden, und in welche Verzeichnisse sie gespeichert werden sollen. Dabei können auch Dokumenteninhalte ausgelesen und im Verzeichnis-/Dateinamen verwendet werden. Diese Einstellung nehmen Sie lediglich einmal je Dokumententyp vor. Danach erfolgt die Erkennung immer wieder automatisch.
NEU: Konfiguration über die Einstellungen möglich
Ab sofort kann die Konfigurationsdatei über die Oberfläche verändert werden.
Ein Beispiel
<Type name="Rechnung Allgemein" fileTargetName="C:/dokumente/Rechnungen/${CURRENT_YEAR}/${NAME}_${DATUM}.pdf"> <select pattern="Rechnung"/> <select pattern="Betrag"/> <select pattern="Auftrag"/> <select pattern="(?i)MWSt"/> <select pattern=" +(\d\d\.\d\d\.\d\d\d\d)" parameter="DATUM"/> </Type>Dabei haben die Einträge folgende Bedeutungen:
- name: Name der nach der Erkennung angezeigt wird. Beliebiger Inhalt.
- fileTargetName: Gibt an, in welchem Verzeichnis und unter welchem Dateinamen die gescannte Datei abgelegt werden soll.
- pattern: Ein regulärer Ausdruck, der einen Inhalt im Dokument identifiziert. Dabei können auch Readable Regular Expressions verwendet werden, was das lesen und schreiben vereinfacht.
- parameter: Verwendet die erste capturing group des regulären Ausdrucks als Wert für den benannten Platzhalter
Platzhalter
Datei und Verzeichnisnamen können Platzhalter enthalten, die entweder automatisch, aus Dateiinhalten oder vom Benutzer ersetzt werden müssen. Ein Platzhalter sieht wie folgt aus:
${XXX}Dabei steht XXX für den Namen des Platzhalters. Das Programm kennt folgende Platzhalter.
- ${CURRENT_YEAR}: Aktuelle Jahreszahl
- ${CURRENT_MONTH}: Aktueller Monat
- ${NUM}: Fortlaufende Nummer.
Kann scandor keinen Wert für einen Platzhalter ermitteln, dann wird der Benutzer nach dem Wert gefragt.
Pattern
Pattern beschreiben einen Inhalt der innerhalb des Dokuments gefunden werden soll. Im einfachsten Fall ist das einfach ein Text.
Anhand von einigen Beispielen wird hier gezeigt, wie das aussehen kann.
Der Dokumententyp bei dem prozentual die meisten Pattern passen wird als der richtige Typ ausgewählt. Daher ist es gut möglichst viele Merkmale
in den Pattern zu haben, um die Erkennungsrate zu verbessern.
Einfacher Text kann ohne weiteres direkt in das Pattern geschrieben werden. Dabei dürfen allerdings keine Umlaute oder Sonderzeichen wie
Punkte, Klammern usw. vorkommen.
<select pattern="Rechnung"/>Neben einfachem Text können in einem Pattern verschiedene Kommandos vorkommen. Dabei unterscheidet man 4 Arten von Kommandos:
- Inhalte
- Anzahl
- Gruppierungen
- Sonderkommandos
<select pattern="add('Rechnung').anyCharacter().count(4)"/>
Inhalts Kommandos
Das einfachste Kommando lautet add. Das folgende Beispiel entspricht exakt dem einfachen Text Pattern von oben.
<select pattern="add('Rechnung')"/>Weitere Inhalts Kommandos:
- alpha() Ein Buchstabe oder eine Zahl
- notAlpha() Kein Buchstabe und keine Zahl
- anyCharacter() Ein beliebiges Zeichen
- digit() Eine Ziffer
- notDigit() Keine Ziffer
- dot() Ein Punkt
- tab() Ein Tabulator Zeichen
- whitespace() Ein Leer-,Tabulator- oder Zeilenumbruch zeichen
- oneOf('AA','BB','CC') Eins von den angegebenen Elementen
- range('c','f') Ein Bereich. Hier c, d, e oder f
- addGroup('ABC') Fügt den Text als Gruppe ein. Dies ist eine Kombination mit dem Gruppenkommando group
- date() Ein Datum
- year() Das Jahr aus dem Datum
- month() Der Monat aus dem Datum
- betrag('TEXT') Der Betrag, der hinter dem angegebenen TEXT steht.
Anzahl Kommandos
Kommandos zur Anzahl beziehen sich immer auf das vorhergehende Inhaltskommando, und beschreiben wie häufig das vorherige Element vorkommen muss.
- count(7) Das Element muss genau 7 mal vorkommen
- count(3,5) Das Element muss mindestens 3 mal, aber höchstens 5 mal vorkommen
- oneOrMore() Das Element 1 mal oder mehr vorkommen
- zeroOrMore() Das Element muss nicht, kann aber mehrfach vorkommen
- zeroOrOne() Das Element muss nicht, kann aber einmal vorkommen
Gruppierungs Kommandos
Gruppierungen zeichnen sich durch einen Beginn und ein Ende aus. Es gibt genau zwei Gruppierungsarten.
- group().xxx.groupEnd() xxx steht für beliebige Inhalts Kommandos
- capture().xxx.captureEnd() xxx steht für beliebige Inhalts Kommandos
Beispiel
Hier ein Beispieldokument, aus dem bestimmte Dinge ausgelesen werden sollen:
Rechnung Max Mustermann AG Sonnenweg 947 99111 Musterstadt Rechnungsdatum: 01.01.2000 Rechnung über ein Rauschiff der Klasse G. Hyperantrieb 47.000.000 ED Traktorstrahl 499.000 ED Rumpf 8.000.000 ED Gesamtbetrag: 55.499.000 ED Bitte überweisen Sie den Betrag bis zum 01.01.3748 an die imperiale Sternenflotte. Max Mustermann AG, IBAN ZZ11 1111 2222 3333 4444 5555, Bank des Universums, MusterstadtMögliche definitionen:
- add('Rechnung')
- Identifiziert das Dokument als Rechnung
- add('Mustermann AG')
- Erkennt die Firma Mustermann AG
- add('Rechnungsdatum').anyCharacter().oneOrMore().capture().digit().count(2).dot().digit().count(2).dot().digit().count(4).captureEnd()
- Erkennt das Rechnungsdatum. Durch die capture Gruppierung kann das Datum einem Platzhalter zugewiesen werden
- datum()
- Erkennt das erste Datum auf der Seite. In diesem Fall identisch mit dem Rechnungsdatum.