Der Skill „OCR“
Mit dem Skill für die optische Zeichenerkennung (OCR) wird gedruckter und handschriftlicher Text in Bilddateien erkannt. Dieser Artikel bildet die Referenzdokumentation zum OCR-Skill. Verwendungsanweisungen finden Sie unter Extrahieren von Text aus Bildern.
Ein OCR-Skill verwendet die Machine Learning-Modelle, die durch v3.2 der Azure AI Vision-API in Azure KI Services bereitgestellt werden. Die Qualifikation OCR ist den folgenden Funktionen zugeordnet:
Für die unter Sprachunterstützung für Azure AI Vision aufgeführten Sprachen wird die Lese-API verwendet.
Für Griechisch und Serbisch Kyrillisch wird die ältere OCR in Version 3.2-API verwendet.
Der Skill OCR extrahiert Text aus Bilddateien. Folgende Dateiformate werden unterstützt:
- .JPEG
- .JPG
- .PNG
- .BMP
- .TIFF
Hinweis
Dieser Skill ist an Azure KI Services gebunden und erfordert eine abrechenbare Ressource für Transaktionen, die 20 Dokumente pro Indexer und Tag überschreiten. Die Ausführung integrierter Skills wird nach dem bestehenden nutzungsbasierten Preis für Azure KI Services berechnet.
Darüber hinaus wird die Bildextraktion durch Azure KI Search abgerechnet.
Skillparameter
Bei den Parametern wird zwischen Groß- und Kleinschreibung unterschieden.
Parametername | Beschreibung |
---|---|
detectOrientation |
Erkennt die Bildausrichtung. Gültige Werte sind true oder false . Dieser Parameter gilt nur, wenn die ältere OCR-Version 3.2-API verwendet wird. |
defaultLanguageCode |
Sprachcode des Eingabetexts. Zu den unterstützten Sprachen gehören alle allgemein verfügbaren Sprachen von Azure AI Vision. Sie können auch unk (unbekannt) angeben. Wenn der Sprachcode nicht angegeben oder Null ist, wird als Sprache automatisch Englisch festgelegt. Wenn die Sprache explizit auf unk festgelegt ist, werden alle gefundenen Sprachen automatisch erkannt und zurückgegeben. |
lineEnding |
Der Wert, der als Zeilentrennzeichen verwendet werden soll. Mögliche Werte: "Space", "CarriageReturn", "LineFeed". Der Standardwert ist "Space". |
In früheren Versionen gab es einen Parameter namens „textExtractionAlgorithm“ zum festlegen der Extraktion von „gedrucktem“ oder „handschriftlichem“ Text. Dieser Parameter ist veraltet, da der aktuelle Algorithmus der Lese-API beide Arten von Text gleichzeitig extrahiert. Wenn Ihr Skill diesen Parameter enthält, brauchen Sie ihn nicht zu entfernen, aber er wird bei der Ausführung des Skills nicht verwendet.
Skilleingaben
Eingabename | Beschreibung |
---|---|
image |
Komplexer Typ. Arbeitet derzeit mit dem Feld „/document/normalized_images“, das vom Azure Blob-Indexer generiert wird, wenn imageAction auf einen anderen Wert als none gesetzt ist. |
Skillausgaben
Ausgabename | Beschreibung |
---|---|
text |
Aus dem Bild extrahierter Nur-Text-Inhalt. |
layoutText |
Komplexer Typ, der den extrahierten Text und die Fundstelle beschreibt. |
Wenn Sie die OCR für Bilder aufrufen, die in PDFs oder anderen Anwendungsdateien eingebettet sind, befindet sich die OCR-Ausgabe am unteren Rand der Seite, nachdem Text extrahiert und verarbeitet wurde.
Beispieldefinition
{
"skills": [
{
"description": "Extracts text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": null,
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text",
"targetName": "myText"
},
{
"name": "layoutText",
"targetName": "myLayoutText"
}
]
}
]
}
Beispieltext und „layoutText“-Ausgabe
{
"text": "Hello World. -John",
"layoutText":
{
"language" : "en",
"text" : "Hello World. -John",
"lines" : [
{
"boundingBox":
[ {"x":10, "y":10}, {"x":50, "y":10}, {"x":50, "y":30},{"x":10, "y":30}],
"text":"Hello World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
],
"words": [
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"Hello"
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
]
}
}
Beispiel: Text, der aus eingebetteten Bildern extrahiert wurde, wird mit dem Inhalt des Dokuments zusammengeführt.
Bei der Dokumententschlüsselung, dem ersten Schritt der Skillset-Ausführung, werden Text- und Bildinhalte getrennt. Ein häufiger Anwendungsfall für die Textzusammenführung ist das Einbinden der Textdarstellung von Bildern (Text aus einem OCR-Skill oder die Untertitel eines Bilds) in das Inhaltsfeld eines Dokuments. Dies gilt für Szenarien, in denen das Quelldokument ein PDF- oder Word-Dokument ist, das Text mit eingebetteten Bildern kombiniert.
Mit der folgenden Beispielqualifikationsgruppe wird das Feld mit der Bezeichnung merged_text erstellt. Dieses Feld enthält den Textinhalt des Dokuments und den per OCR erkannten Text aus den einzelnen im Dokument eingebetteten Bildern.
Syntax des Anforderungstexts
{
"description": "Extract text from images and merge with content text to produce merged_text",
"skills":
[
{
"description": "Extract text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.MergeSkill",
"description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field.",
"context": "/document",
"insertPreTag": " ",
"insertPostTag": " ",
"inputs": [
{
"name":"text",
"source": "/document/content"
},
{
"name": "itemsToInsert",
"source": "/document/normalized_images/*/text"
},
{
"name":"offsets",
"source": "/document/normalized_images/*/contentOffset"
}
],
"outputs": [
{
"name": "mergedText",
"targetName" : "merged_text"
}
]
}
]
}
Im oben gezeigten Beispiel für das Skillset wird davon ausgegangen, dass ein Feld mit normalisierten Bildern vorhanden ist. Um ein Feld zu erhalten, legen Sie die Konfiguration imageAction in Ihrer Indexerdefinition auf generateNormalizedImages fest, wie unten gezeigt:
{
//...rest of your indexer definition goes here ...
"parameters": {
"configuration": {
"dataToExtract":"contentAndMetadata",
"imageAction":"generateNormalizedImages"
}
}
}