Syntaxe ImageParser

ImageParser(#ImageParser) est un module de CodX PostOffice permettant de contrôler le traitement des images. Un fichier de configuration XML indique comment l'image doit être traitée.

Le fichier XML se compose de règles (ParserRule) avec des éléments d'image (Element) et des critères d'évaluation (Criteria).

Exemple de fichier de configuration ImageParser

<ImageParser Name="Parser 1" Timeout="10000" Reference="SN-AZD, FE" Remark="C'est une remarque">
<ParserRule Name="Rolle 1" Rotate="0, 30, 60, 90" Origin="top_left" Trim="Bottom, Right " FirstPage="1" LastPage="3">
<Elément Name="Élément 1" x="100 px" y="200 px" h="50 mm" w="40 mm" Type="Texte" Rotate="0, 90, 180, 270" ValidValue="[a-z]+" Prerequisite="Mandatory" SBB-CF="Code alternatif"></Élément>
<Élément Name="Élément 2" x="200 px" y="400 px" h="50 mm" w="40 mm" Type="Barcode" BarcodeType="All" Rotate="0" PreProcess="BRectS" InvalidValue="( ?<Invalid>[^[0-9a-zA-Z()-/\s\öüéàèÖÄÜ])"></Elément>
<Elément Name="Elément 3" x="300 px" y="500 px" h="50 mm" w="40 mm" Type="UPOC" Rotate="0" ValidValue="[0-9]+"></élément>

<élément Name="PostAdr1" Type="PostalAddress"ValidValue="[AdrLevel_City]"></élément>
<Criteria Name="Criteria 1" Operation="AND" ElementName="Élément 1" RegEx="[a-z]+"></Criteria>
<Criteria Name="Criteria 2" Operation="AND" ElementName="Élément 2" RegEx="[0-9]+"></Criteria>
<Criteria Name="Criteria 3" Operation="OR" ElementName="Élément 3" RegEx="04[0-9]+"></Criteria>
<Criteria Name="Criteria 3" Operation="AND" ElementName="PostAdr1" RegEx="[AdrLevel_City]"></Criteria>
</ParserRule>
<ParserRule Name="Rôle 2" Rotate="0, -30, -60, -90" Origin="top_left" Trim="Top">
<Elément Name="Élément 1" x="100 px" y="200 px" h="50 mm" w="40 mm" Type="Texte" Rotate="0, 90, 180, 270" ValidValue="[a-z]+"></élément>
<Elément Name=lément2" x="200 px" y="400 px" h="50 mm" w="40 mm" Type="Code-barres" Rotate="0" ValidValue="[a-z]+"></élément>
<Element Name="Élément 3" x="300 px" y="500 px" h="50 mm" w="40 mm" Type="UPOC" Rotate="0" ValidValue="[0-9]+"></élément>
<Criteria Name="Criteria 1" Operation="AND" ElementName="Élément 1" RegEx="[a-z]+"></Criteria>
<Criteria Name="Criteria 2" Operation="AND" ElementName="Élément 2" RegEx="[0-9]+"></Criteria>
<Criteria Name="Criteria 3" Operation="OR" ElementName="Élément 3" RegEx="04[0-9]+"></Criteria>
</ParserRule>

</ImageParser>Tags

Le fichier de configuration XML est structuré comme suit :

ImageParser

Contient 1 ou plusieurs balises de 'ParserRule'.

AttributDescription
NomNom de l'ImageParser
TimeoutTemps de traitement maximal en millisecondes. Lorsque le timeout est atteint, le traitement est interrompu et aucun résultat n'est renvoyé.Cet attribut est facultatif, la valeur par défaut est de 3500 ms et le timeout maximal autorisé est de 100000 ms.
Si le timeout est égal à 0 ou inférieur à 0, le timeout est mis à la valeur standard, s'il est supérieur à la valeur maximale autorisée, il est remis à la valeur maximale.
ReferenceRéférence au module/à la fonction qui utilise cet ImageParser.
Si un ImageParser est utilisé dans plusieurs modules, les noms des modules sont séparés par une virgule.

Les valeurs suivantes sont possibles :
  • R-SCAN
    CxLetterScan en mode 'R-Scan'
    CxLetterScan en mode 'Maintenance'
    Module R-Scan
  • SCANNER
    CxLetterScan en mode 'Scanner'
  • CAPTURE
    CxLetterScan en mode 'Capture'
  • SORT
    CxLetterScan en mode 'Sort'
  • DIGITAL
    Numérisation
RemarkRemarque sur ImageParser.
Cet attribut est facultatif.
SafeModeFacultatif, plage de valeurs : 0/1 (false/true), par défaut : 0 (false)
Si 1 (true), l'ImageParser fonctionne en mode sans échec. Dans ce cas, un seul thread et diverses optimisations sont utilisés en interne pour une consommation minimale de la mémoire RAM.
Si l'image à traiter est multicolore ou a une résolution supérieure à celle définie dans l'attribut SafeModeResolution, l'image est automatiquement convertie en une image en niveaux de gris de 8 bits avant l'analyse.
ATTENTION !
N'utilisez cette option que si de très grandes images sont traitées !
La durée de traitement augmente ainsi fortement (environ 5..10 fois), adaptez l'attribut Timeout en conséquence.
SafeModeResolutionFacultatif, plage de valeurs : 100..300 [DPI], par défaut : 200 [PDI].
N'est utilisé que si l'attribut SafeMode est activé.
Définit la résolution d'image [DPI] utilisée en mode sans échec (voir ci-dessus).

ParserRule

Contient 1 ou plusieurs balises de 'Element' et 'Criteria

'
AttributDescription
NomNom de la ParserRule
RotateListe des angles avec lesquels la valeur doit être lue.
Les angles sont séparés par une virgule.
Les angles augmentent dans le sens des aiguilles d'une montre de 0 à 360°.
ATTENTION : chaque angle supplémentaire multiplie en outre le temps de traitement !
Origine
de l'image.
Toutes les coordonnées se réfèrent à cette origine.
Valeurs possibles :
- top_left
- top_right
- bottom_left (default)
- bottom_right
Cet attribut est facultatif.
TrimFacultatif.
Si cet attribut est défini, la partie correspondante de l'image qui est nettement plus sombre que le reste de l'image est coupée.
Les valeurs possibles sont une combinaison des valeurs suivantes, séparées par une virgule :
- Top
- Bottom
- Left
- Right
FirstPageCet attribut n'est utilisé que si plusieurs documents sont traités en même temps, p. ex. dans la numérisation.
Cette ParserRule est appliquée à partir de cette page.
Si la page à traiter est plus petite, la ParserRule est ignorée.
LastPageCet attribut n'est utilisé que si plusieurs documents sont traités en même temps, p. ex. dans la numérisation.
Jusqu'à cette page, cette ParserRule est appliquée.
Si la page à traiter est plus grande, la ParserRule est ignorée.

Élément

Décrit l'élément à analyser.

ent
AttributDescription
Nom Nomde l'élément, doit obligatoirement être présent !
CxLetterScan requiert obligatoirement certains éléments selon le mode (use-case).
Voir l'aide en ligne du mode correspondant.
Type Typed'élément ; optionnel, valeur par défaut : texte.
Les types suivants sont possibles :
- texte: La section de l'élément est analysée par OCR et le texte reconnu est édité [*1].
- Code-barres: La section de l'élément est analysée à la recherche d'un code-barres [*1].
- UPOC: La section de l'élément est analysée à la recherche d'un code-barres et vérifie s'il s'agit d'un UPOC valable (type, mandant, ID, somme de contrôle) [*1].
- PostalAddress: La section de l'élément est analysée avec OCR et le tokenizer d'adresse et l'adresse reconnue est éditée [*2].
Voir aussi Adresses postales.
xCoordonnée X du coin supérieur gauche de l'élément.
La coordonnée se réfère à l'origine de l'image.
Une unité peut être indiquée en option, par défaut = px (pixel).
Les unités suivantes sont possibles :
- px: pixel (par défaut)
- %:
Pourcentage, par rapport à l'image entière
- mm: millimètres (uniquement si la résolution est connue)
yCoordonnée Y du coin supérieur gauche de l'élément.
La coordonnée se réfère à l'origine de l'image.
Une unité peut être indiquée en option, par défaut = px (pixels).
Les unités suivantes sont possibles :
- px: pixels (par défaut)
- %:
Pourcentage, par rapport à l'image entière
- mm: millimètres (uniquement si la résolution est connue).
hHauteur de l'élément.
Une unité peut être indiquée en option, par défaut = px (pixel).
Les unités suivantes sont possibles :
- px: pixel (par défaut)
- %:
Pourcentage, par rapport à l'image entière
- mm: millimètres (uniquement si la résolution est connue).
wLargeur de l'élément.
Une unité peut être indiquée en option, par défaut = px (pixels).
Les unités suivantes sont possibles :
- px: pixels (par défaut)
- %:
Pourcentage, par rapport à l'image entière
- mm: Millimètres (uniquement si la résolution est connue)
BarcodeTypeType de code-barres. Pertinent uniquement pour le type 'code-barres'. Plusieurs types de codes-barres peuvent être indiqués. Ceux-ci sont indiqués séparés par une virgule.
Les types de codes-barres suivants sont possibles :
- All (ou pas d'indication) : La recherche porte sur tous les types de codes-barres ci-dessous.
- All1D : La recherche porte sur tous les types de codes-barres 1D
- All2D : On recherche tous les types de codes à barres 2D
- AustralianPostCode
- Aztec
- Circular2of5
- Codabar
- CodablockF
- Code128
- Code16K
- Code39
- Code39Extended
- Code39Mod43
- Code39Mod43Extended
- Code93
- DataMatrix
- EAN13
- EAN2
- EAN5
- EAN8
- GS1
- GS1DataBarExpanded
- GS1DataBarExpandedStacked
- GS1DataBarLimited
- GS1DataBarStacked
- GS1DataBarOmnidirectionnel
- GTIN12 (UPC-A avec 12 symboles)
- GTIN13 (EAN-13)
- GTIN14 (I2of5 avec 14 digits)
- GTIN8 (EAN-8)
- IntelligentMail
- Interleaved2of5
- ITF14 (I2of5 avec 14 digits)
- MaxiCode
- MICR
- MicroPDF
- MSI
- PatchCode
- PDF417
- Pharmacode
- PostNet
- PZN
- QRCode
- RoyalMail
- RoyalMailKIX
- TriopticCode39
- UPCA
- UPCE
- UPU
Cet attribut est facultatif, la valeur par défaut est 'All'.
RotateFacultatif, par défaut = 0 (0°).
Angle en degrés [°] dont l'élément doit être tourné pour être lisible horizontalement de gauche à droite .
Les angles sont saisis séparés par une virgule.
Les angles augment
dans le sens des aiguilles d'une montre de 0 à 360°.
Les indications négatives sont autorisées, elles sont automatiquement converties en l'angle positif correspondant, par ex. -20° = + 340°.
La rotation de l'élément s'effectue après la rotation de l'image complète (voir attribut Rotate de Tag ParserRule) et après la découpe de l'élément selon les attributs y,x,h, w.
ATTENTION: Chaque angle supplémentaire multiplie encore le temps de traitement !
Afin d'éviter des lectures erronées d'éléments de codes à barres et en particulier d'éléments UPOC, il est important que les angles possibles soient correctement définis.
Le moteur OCR de codes à barres utilisé en interne supporte les angles de rotation discrets suivants : 0°, 11°, 22°, 45°, 90°, 135°, 158°, 169°, 180°, 191°, 202°, 225°, 270°, 315°, 338°, 349°. Les angles indiqués sont arrondis à l'angle le plus proche.
Des indications d'angle supplémentaires sont impératives lorsque la torsion est supérieure à l'arc-tangente (tan-1) du rapport entre la hauteur du trait et la longueur du code à barres.
Exemple : hauteur du trait = 10 mm, longueur totale = 50 mm. Ainsi : Arctan(10/50)=11,3°.
Donc : si le code-barres peut être tourné de plus de 11°, la valeur 11 doit être ajoutée comme angle de rotation.
PreProcessOptionnel, prétraitement de l'image pour la lecture OCR du code-barres, n'est disponible que pour le type Code-barres! Valeur par défaut : <vide> (pas de prétraitement)
Les prétraitements suivants sont possibles :
- BRectS: découpe de petites zones utilisées et traitement individuel. Améliore la lecture des codes à barres et des DataMatrix. Longue durée de traitement.
- BRectM: Découpe de zones d'utilisation moyenne et traitement unique. Améliore la lecture des codes à barres et DataMatrix. Durée de traitement moyenne.
- BRectL: Découpe de grandes zones utilisées et traitement unique. Améliore la lecture des codes à barres et des DataMatrix.
Temps de traitement court.
ValidValueExpression RegEx qui définit une valeur valide de l'élément. L'élément n'a une valeur valable que si elle a été vérifiée selon l'expression RegEx. Dans le cas contraire, la valeur de l'élément est vide.
A ne pas confondre avec 'RegEx' du critère.
Si l'attribut 'ValidValue' n'est pas indiqué ou est vide, les valeurs par défaut suivantes s'appliquent :
- texte: "[0-9,a-z,A-Z]+"
- code-barres: "[0-9,a-z,A-Z]+"
- UPOC: <vide>, la valeur est vérifiée en vérifiant la syntaxe UPOC.
Si un RegEx est indiqué, il est en outre évalué selon la syntaxe UPOC.
InvalidValueExpression RegEx qui définit toutes les valeurs non valables d'un élément. L'élément ne peut contenir aucune de ces valeurs invalides, auquel cas l'élément est valide.
Si cet élément est saisi, il a la priorité sur l'élément "ValidValue".
Si l'attribut 'InvalidValue' n'est pas indiqué ou est vide, la valeur par défaut reste vide et la règle pour 'ValidValue' est active.
OCRMinConfidenceOptionnel, par défaut = 0, disponible uniquement pour les types Text et PostalAddress.
Cet attribut définit la qualité minimale (Confidence) que doit avoir au minimum le texte complet reconnu par la reconnaissance OCR pour la suite du traitement. Le paramètre global xxx est appliqué dans tous les cas pour chaque ligne individuelle !
Plage : 0% ...
100%
Les textes bien reconnus ont une Confidence >= 50%, les mauvais < 30%.
PrerequisiteCet attribut n'est utilisé que lors de la numérisation. Il définit si la valeur de cet élément doit impérativement être présente pour achever la numérisation.
Si l'élément n'est pas trouvé, il faut impérativement procéder à un traitement ultérieur ou à une saisie manuelle.
Les valeurs suivantes sont possibles :
- Optional
- Mandatory
- None
CFF-CFCet attribut n'est utilisé que pour la numérisation.
Il définit dans quel Custfield d'envoi la valeur déterminée de l'élément actuel doit être enregistrée

[*1] : Si Type = Text, Barcode, UPOC , tous les attributs x,y,h,w doivent être définis !
[*2] :

Si Type = PostalAddress , tous les attributs x,y,h,w ou aucun doivent être définis !

Criteria

Décrit les critères qui doivent être remplis pour que cette ParserRule s'applique.

Si les critères ne sont pas remplis, la ParserRule suivante est traitée.
Ceci ne doit pas être confondu avec 'ValidValue' de l'élément !

'
AttributDescription
Nom Nomdu critère
OpérationIndique comment le critère est lié logiquement.
Valeurs possibles : 'AND', 'OR
ElementNameNom de l'élément qui doit être vérifié.
RegExExpression RegEx qui doit être remplie.
Les éléments de type PostalAddress ne supportent AUCUN Critère, la validité est déterminée sur la base de règles internes !

Adresses postales

Les éléments de type PostalAddress sont traités comme suit :
Les attributs x, y, h, w sont facultatifs. S'ils ne sont pas indiqués (ou s'ils sont tous à 0), l'image entière est analysée à la recherche de blocs de texte.
Si les attributs x, y, h, w sont définis, seule la partie définie est utilisée (comme pour le type d'élément "Texte").
Les blocs de texte trouvés sont triés selon certains critères et analysés avec OCR et SortTree.

La première/meilleure adresse reconnue est éditée.
Si aucune valeur n'est définie pour ValidValue , tous les blocs d'adresses détectés sont retournés sous forme de chaîne, il n'y a PAS d'analyse avec SortTree !

Attributs spécifiques pour élément de type "PostalAddress"

Les attributs suivants sont spécifiques aux éléments de type "PostalAddress".
ATTENTION : Les attributs CutLength/CutWidth et ExclusionZone* s'excluent mutuellement, seule une des deux variantes peut être utilisée !
Pour les nouvelles définitions, la zone d'exclusion doit être définie avec ExclusionZone*.

.
AttributDescription
ValidValueLes pseudo-régions suivantes (par défaut : <vide>) sont supportées :
- <vide> (par défaut)
- [AdrLevel_Country]
- [AdrLevel_City]
- [AdrLevel_Street]
- [AdrLevel_House]
- [AdrLevel_Name]
CutLengthOptionnel, par défaut = 0 (aucune zone d'exclusion).
Définit une zone d'exclusion en [mm] pour les blocs de texte détectés automatiquement (x,y,h,w = 0) sur les deux grands côtés de l'image.
Les blocs de texte détectés qui chevauchent cette zone sont ignorés.
CutWidthFacultatif, par défaut = 0 (pas de zone d'exclusion).
Définit une zone d'exclusion en [mm] pour les blocs de texte trouvés automatiquement (x,y,h,w = 0) sur les deux côtés courts de l'image.
Les blocs de texte détectés qui chevauchent cette zone sont ignorés.
ValidateAddressFacultatif, plage de valeurs : 0/1, par défaut : 0
Définit comment les adresses trouvées sont vérifiées selon ValidValue.
0 : La vérification se fait par décomposition via Tokenizer et test de non vide (jusqu'au niveau défini par ValidValue )
1 : La vérification se fait par rapport aux données territoriales de l'administration de district.
L'adresse doit être valable au moins jusqu'au niveau défini par ValidValue.
ExclusionZoneTopFacultatif, si non disponible, le réglage par défaut est utilisé.
Définit une zone d'exclusion au bord supérieur [mm].
Les blocs de texte qui chevauchent cette zone sont ignorés.
ExclusionZoneBottomFacultatif, si non disponible, le réglage par défaut est utilisé

.
Définit une zone d'exclusion au niveau de la marge inférieure [mm].
Les blocs de texte qui chevauchent cette zone sont ignorés.
ExclusionZoneLeftEn option, si elle n'existe pas, le réglage par défaut est utilisé.
Définit une zone d'exclusion au niveau de la marge gauche [mm].
Les blocs de texte qui chevauchent cette zone sont ignorés.
ExclusionZoneRightEn option, si elle n'existe pas, le réglage par défaut est utilisé

d'sont pas appliquées.
Définit une "zone d'exclusion" sur la marge de droite [mm].
Les blocs de texte qui chevauchent cette zone sont ignorés.
DisableCodingZoneFacultatif, plage de valeurs : 0/1 (false/true), par défaut : 0 (false)
Si 1 (true), les zones
affranchissement
fixes définies en interne ne
DisableFrankingZoneFacultatif, plage de valeurs : 0/1 (false/true), par défaut : 0 (false)
Si 1 (true), les zones d'affranchissement fixes définies en interne ne sont pas appliquées.
RefPointModeOptionnel, par défaut = 0 (pas de zone d'exclusion).
Les pseudo-réglages suivants (par défaut : <vide>) sont supportés :
- AutoBasedFullImage
- AutoBasedExclZone
- ValueBasedExclZone

Si AutoBasedExclZone ou ValueBasedExclZone est défini, les attributs CutLength et CutWidthNE doiventPAS être définis. Les zones d'exclusion doivent être définies par ExclusionZone*.

Si ValueBasedExclZone est défini :

-
alors les deux attributs RefPointX et RefPointY doivent être définis
- les attributs CutLength et CutWidth NE doivent PAS être définis
- DisableCodingZone et DisableFrankingZone doivent être True
RefPointXPoint de référence X-Coodinate en [mm],
[
%] ou pixels (à partir de la gauche)
Utilisé uniquement si RefPointMode = ValueBasedExclZone
RefPointYPoint de référence coodonnée Y en [mm], [%] ou pixels (à partir du haut)
Utilisé uniquement si RefPointMode = ValueBasedExclZone

Fonctionnement

Vous trouverez le fonctionnement et des informations complémentaires dans l'AdminDoc (chercher ' ').ImageParser')

Voir aussi :



CodX Software CodX Software AG
Rue de Sins 47
6330 Cham
Suisse
Support
http://support.codx.ch
CxSpickel