Mogelijkheden van de invoegtoepassing Document Intelligence
Artikel
Belangrijk
Openbare preview-versies van Document Intelligence bieden vroegtijdige toegang tot functies die actief zijn in ontwikkeling. Functies, benaderingen en processen kunnen veranderen, vóór algemene beschikbaarheid (GA), op basis van feedback van gebruikers.
De openbare preview-versie van Document Intelligence-clientbibliotheken is standaard ingesteld op REST API-versie 2024-07-31-preview.
Openbare preview-versie 2024-07-31-preview is momenteel alleen beschikbaar in de volgende Azure-regio's. Houd er rekening mee dat het aangepaste model voor generatieve (extractie van documentvelden) in AI Studio alleen beschikbaar is in de regio VS - noord-centraal:
VS - oost
VS - west 2
Europa -west
VS - noord-centraal
Deze inhoud is van toepassing op:v4.0 (preview) | Vorige versies: v3.1 (GA)
Deze inhoud is van toepassing op:v3.1 (GA) | Nieuwste versie: v4.0 (preview)
Notitie
Mogelijkheden voor invoegtoepassingen zijn beschikbaar in alle modellen, met uitzondering van het visitekaartjesmodel.
Functies
Document Intelligence biedt ondersteuning voor geavanceerdere en modulaire analysemogelijkheden. Gebruik de invoegtoepassingsfuncties om de resultaten uit te breiden met meer functies die zijn geëxtraheerd uit uw documenten. Voor sommige invoegtoepassingsfuncties worden extra kosten in rekening gebracht. Deze optionele functies kunnen worden ingeschakeld en uitgeschakeld, afhankelijk van het scenario van de documentextractie. Als u een functie wilt inschakelen, voegt u de bijbehorende functienaam toe aan de eigenschap van de features queryreeks. U kunt meer dan één invoegtoepassingsfunctie inschakelen op een aanvraag door een door komma's gescheiden lijst met functies op te geven. De volgende uitbreidingsmogelijkheden zijn beschikbaar voor 2023-07-31 (GA) en latere versies.
Niet alle mogelijkheden voor invoegtoepassingen worden ondersteund door alle modellen. Zie modelgegevensextractie voor meer informatie.
Invoegtoepassingsmogelijkheden worden momenteel niet ondersteund voor Microsoft Office-bestandstypen.
Document Intelligence ondersteunt optionele functies die kunnen worden ingeschakeld en uitgeschakeld, afhankelijk van het scenario voor documentextractie. De volgende mogelijkheden voor invoegtoepassingen zijn beschikbaar voor 2023-10-31-previewen latere versies:
De implementatie van queryvelden in de API 2023-10-30-preview verschilt van de laatste preview-versie. De nieuwe implementatie is goedkoper en werkt goed met gestructureerde documenten.
✱ Invoegtoepassing - Queryvelden zijn anders geprijsd dan de andere invoegtoepassingsfuncties. Zie prijzen voor meer informatie.
Ondersteunde bestandsindelingen
PDF
Afbeeldingen: JPEG/JPG, PNG, BMP, , TIFFHEIF
✱ Microsoft Office-bestanden worden momenteel niet ondersteund.
Extractie met hoge resolutie
De taak van het herkennen van kleine tekst uit grote documenten, zoals technische tekeningen, is een uitdaging. De tekst wordt vaak gemengd met andere grafische elementen en heeft verschillende lettertypen, grootten en afdrukstanden. Bovendien kan de tekst worden opgesplitst in afzonderlijke delen of worden verbonden met andere symbolen. Document Intelligence biedt nu ondersteuning voor het extraheren van inhoud uit deze typen documenten met de ocr.highResolution mogelijkheid. U krijgt verbeterde kwaliteit van inhoudextractie uit A1/A2/A3-documenten door deze invoegtoepassing in te schakelen.
# Analyze a document at a URL:
formUrl = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/add-on-highres.png?raw=true"
poller = document_intelligence_client.begin_analyze_document(
"prebuilt-layout",
AnalyzeDocumentRequest(url_source=formUrl),
features=[DocumentAnalysisFeature.OCR_HIGH_RESOLUTION], # Specify which add-on capabilities to enable.
)
result: AnalyzeResult = poller.result()
# [START analyze_with_highres]
if result.styles and any([style.is_handwritten for style in result.styles]):
print("Document contains handwritten content")
else:
print("Document does not contain handwritten content")
for page in result.pages:
print(f"----Analyzing layout from page #{page.page_number}----")
print(f"Page has width: {page.width} and height: {page.height}, measured with unit: {page.unit}")
if page.lines:
for line_idx, line in enumerate(page.lines):
words = get_words(page, line)
print(
f"...Line # {line_idx} has word count {len(words)} and text '{line.content}' "
f"within bounding polygon '{line.polygon}'"
)
for word in words:
print(f"......Word '{word.content}' has a confidence of {word.confidence}")
if page.selection_marks:
for selection_mark in page.selection_marks:
print(
f"Selection mark is '{selection_mark.state}' within bounding polygon "
f"'{selection_mark.polygon}' and has a confidence of {selection_mark.confidence}"
)
if result.tables:
for table_idx, table in enumerate(result.tables):
print(f"Table # {table_idx} has {table.row_count} rows and " f"{table.column_count} columns")
if table.bounding_regions:
for region in table.bounding_regions:
print(f"Table # {table_idx} location on page: {region.page_number} is {region.polygon}")
for cell in table.cells:
print(f"...Cell[{cell.row_index}][{cell.column_index}] has text '{cell.content}'")
if cell.bounding_regions:
for region in cell.bounding_regions:
print(f"...content on page {region.page_number} is within bounding polygon '{region.polygon}'")
# Analyze a document at a URL:
url = "(https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/add-on-highres.png?raw=true"
poller = document_analysis_client.begin_analyze_document_from_url(
"prebuilt-layout", document_url=url, features=[AnalysisFeature.OCR_HIGH_RESOLUTION] # Specify which add-on capabilities to enable.
)
result = poller.result()
# [START analyze_with_highres]
if any([style.is_handwritten for style in result.styles]):
print("Document contains handwritten content")
else:
print("Document does not contain handwritten content")
for page in result.pages:
print(f"----Analyzing layout from page #{page.page_number}----")
print(
f"Page has width: {page.width} and height: {page.height}, measured with unit: {page.unit}"
)
for line_idx, line in enumerate(page.lines):
words = line.get_words()
print(
f"...Line # {line_idx} has word count {len(words)} and text '{line.content}' "
f"within bounding polygon '{format_polygon(line.polygon)}'"
)
for word in words:
print(
f"......Word '{word.content}' has a confidence of {word.confidence}"
)
for selection_mark in page.selection_marks:
print(
f"Selection mark is '{selection_mark.state}' within bounding polygon "
f"'{format_polygon(selection_mark.polygon)}' and has a confidence of {selection_mark.confidence}"
)
for table_idx, table in enumerate(result.tables):
print(
f"Table # {table_idx} has {table.row_count} rows and "
f"{table.column_count} columns"
)
for region in table.bounding_regions:
print(
f"Table # {table_idx} location on page: {region.page_number} is {format_polygon(region.polygon)}"
)
for cell in table.cells:
print(
f"...Cell[{cell.row_index}][{cell.column_index}] has text '{cell.content}'"
)
for region in cell.bounding_regions:
print(
f"...content on page {region.page_number} is within bounding polygon '{format_polygon(region.polygon)}'"
)
Met de ocr.formula mogelijkheid worden alle geïdentificeerde formules, zoals wiskundige vergelijkingen, in de verzameling geëxtraheerd als een object op het formulas hoogste niveau onder content. Binnen contentworden gedetecteerde formules weergegeven als :formula:. Elke vermelding in deze verzameling vertegenwoordigt een formule met het formuletype als inline of display, en de LaTeX-weergave, samen value met de polygon coördinaten. In eerste instantie worden formules weergegeven aan het einde van elke pagina.
# Analyze a document at a URL:
formUrl = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/layout-formulas.png?raw=true"
poller = document_intelligence_client.begin_analyze_document(
"prebuilt-layout",
AnalyzeDocumentRequest(url_source=formUrl),
features=[DocumentAnalysisFeature.FORMULAS], # Specify which add-on capabilities to enable
)
result: AnalyzeResult = poller.result()
# [START analyze_formulas]
for page in result.pages:
print(f"----Formulas detected from page #{page.page_number}----")
if page.formulas:
inline_formulas = [f for f in page.formulas if f.kind == "inline"]
display_formulas = [f for f in page.formulas if f.kind == "display"]
# To learn the detailed concept of "polygon" in the following content, visit: https://aka.ms/bounding-region
print(f"Detected {len(inline_formulas)} inline formulas.")
for formula_idx, formula in enumerate(inline_formulas):
print(f"- Inline #{formula_idx}: {formula.value}")
print(f" Confidence: {formula.confidence}")
print(f" Bounding regions: {formula.polygon}")
print(f"\nDetected {len(display_formulas)} display formulas.")
for formula_idx, formula in enumerate(display_formulas):
print(f"- Display #{formula_idx}: {formula.value}")
print(f" Confidence: {formula.confidence}")
print(f" Bounding regions: {formula.polygon}")
# Analyze a document at a URL:
url = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/layout-formulas.png?raw=true"
poller = document_analysis_client.begin_analyze_document_from_url(
"prebuilt-layout", document_url=url, features=[AnalysisFeature.FORMULAS] # Specify which add-on capabilities to enable
)
result = poller.result()
# [START analyze_formulas]
for page in result.pages:
print(f"----Formulas detected from page #{page.page_number}----")
inline_formulas = [f for f in page.formulas if f.kind == "inline"]
display_formulas = [f for f in page.formulas if f.kind == "display"]
print(f"Detected {len(inline_formulas)} inline formulas.")
for formula_idx, formula in enumerate(inline_formulas):
print(f"- Inline #{formula_idx}: {formula.value}")
print(f" Confidence: {formula.confidence}")
print(f" Bounding regions: {format_polygon(formula.polygon)}")
print(f"\nDetected {len(display_formulas)} display formulas.")
for formula_idx, formula in enumerate(display_formulas):
print(f"- Display #{formula_idx}: {formula.value}")
print(f" Confidence: {formula.confidence}")
print(f" Bounding regions: {format_polygon(formula.polygon)}")
"content": ":formula:",
"pages": [
{
"pageNumber": 1,
"formulas": [
{
"kind": "inline",
"value": "\\frac { \\partial a } { \\partial b }",
"polygon": [...],
"span": {...},
"confidence": 0.99
},
{
"kind": "display",
"value": "y = a \\times b + a \\times c",
"polygon": [...],
"span": {...},
"confidence": 0.99
}
]
}
]
Extractie van lettertype-eigenschap
De ocr.font mogelijkheid extraheert alle lettertype-eigenschappen van tekst die in de styles verzameling zijn geëxtraheerd als een object op het hoogste niveau onder content. Elk stijlobject specificeert één lettertype-eigenschap, de tekst waarop het van toepassing is en de bijbehorende betrouwbaarheidsscore. De bestaande stijleigenschap wordt uitgebreid met meer lettertype-eigenschappen, zoals similarFontFamily voor het lettertype van de tekst, fontStyle voor stijlen zoals cursief en normaal, fontWeight voor vet of normaal, color voor kleur van de tekst en backgroundColor voor kleur van het tekstbegrenzingsvak.
# Analyze a document at a URL:
formUrl = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/receipt/receipt-with-tips.png?raw=true"
poller = document_intelligence_client.begin_analyze_document(
"prebuilt-layout",
AnalyzeDocumentRequest(url_source=formUrl),
features=[DocumentAnalysisFeature.STYLE_FONT] # Specify which add-on capabilities to enable.
)
result: AnalyzeResult = poller.result()
# [START analyze_fonts]
# DocumentStyle has the following font related attributes:
similar_font_families = defaultdict(list) # e.g., 'Arial, sans-serif
font_styles = defaultdict(list) # e.g, 'italic'
font_weights = defaultdict(list) # e.g., 'bold'
font_colors = defaultdict(list) # in '#rrggbb' hexadecimal format
font_background_colors = defaultdict(list) # in '#rrggbb' hexadecimal format
if result.styles and any([style.is_handwritten for style in result.styles]):
print("Document contains handwritten content")
else:
print("Document does not contain handwritten content")
return
print("\n----Fonts styles detected in the document----")
# Iterate over the styles and group them by their font attributes.
for style in result.styles:
if style.similar_font_family:
similar_font_families[style.similar_font_family].append(style)
if style.font_style:
font_styles[style.font_style].append(style)
if style.font_weight:
font_weights[style.font_weight].append(style)
if style.color:
font_colors[style.color].append(style)
if style.background_color:
font_background_colors[style.background_color].append(style)
print(f"Detected {len(similar_font_families)} font families:")
for font_family, styles in similar_font_families.items():
print(f"- Font family: '{font_family}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_styles)} font styles:")
for font_style, styles in font_styles.items():
print(f"- Font style: '{font_style}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_weights)} font weights:")
for font_weight, styles in font_weights.items():
print(f"- Font weight: '{font_weight}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_colors)} font colors:")
for font_color, styles in font_colors.items():
print(f"- Font color: '{font_color}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_background_colors)} font background colors:")
for font_background_color, styles in font_background_colors.items():
print(f"- Font background color: '{font_background_color}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
# Analyze a document at a URL:
url = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/receipt/receipt-with-tips.png?raw=true"
poller = document_analysis_client.begin_analyze_document_from_url(
"prebuilt-layout", document_url=url, features=[AnalysisFeature.STYLE_FONT] # Specify which add-on capabilities to enable.
)
result = poller.result()
# [START analyze_fonts]
# DocumentStyle has the following font related attributes:
similar_font_families = defaultdict(list) # e.g., 'Arial, sans-serif
font_styles = defaultdict(list) # e.g, 'italic'
font_weights = defaultdict(list) # e.g., 'bold'
font_colors = defaultdict(list) # in '#rrggbb' hexadecimal format
font_background_colors = defaultdict(list) # in '#rrggbb' hexadecimal format
if any([style.is_handwritten for style in result.styles]):
print("Document contains handwritten content")
else:
print("Document does not contain handwritten content")
print("\n----Fonts styles detected in the document----")
# Iterate over the styles and group them by their font attributes.
for style in result.styles:
if style.similar_font_family:
similar_font_families[style.similar_font_family].append(style)
if style.font_style:
font_styles[style.font_style].append(style)
if style.font_weight:
font_weights[style.font_weight].append(style)
if style.color:
font_colors[style.color].append(style)
if style.background_color:
font_background_colors[style.background_color].append(style)
print(f"Detected {len(similar_font_families)} font families:")
for font_family, styles in similar_font_families.items():
print(f"- Font family: '{font_family}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_styles)} font styles:")
for font_style, styles in font_styles.items():
print(f"- Font style: '{font_style}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_weights)} font weights:")
for font_weight, styles in font_weights.items():
print(f"- Font weight: '{font_weight}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_colors)} font colors:")
for font_color, styles in font_colors.items():
print(f"- Font color: '{font_color}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
print(f"\nDetected {len(font_background_colors)} font background colors:")
for font_background_color, styles in font_background_colors.items():
print(f"- Font background color: '{font_background_color}'")
print(f" Text: '{get_styled_text(styles, result.content)}'")
Met de ocr.barcode mogelijkheid worden alle geïdentificeerde streepjescodes in de verzameling geëxtraheerd als een object op het barcodes hoogste niveau onder content. Binnen de contentgedetecteerde streepjescodes worden weergegeven als :barcode:. Elke vermelding in deze verzameling vertegenwoordigt een streepjescode en bevat het type streepjescode als kind en de inhoud van de ingesloten streepjescode, samen value met polygon de coördinaten. In eerste instantie worden streepjescodes weergegeven aan het einde van elke pagina. De confidence code is vastgelegd voor als 1.
# Analyze a document at a URL:
url = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/add-on-barcodes.jpg?raw=true"
poller = document_analysis_client.begin_analyze_document_from_url(
"prebuilt-layout", document_url=url, features=[AnalysisFeature.BARCODES] # Specify which add-on capabilities to enable.
)
result = poller.result()
# [START analyze_barcodes]
# Iterate over extracted barcodes on each page.
for page in result.pages:
print(f"----Barcodes detected from page #{page.page_number}----")
print(f"Detected {len(page.barcodes)} barcodes:")
for barcode_idx, barcode in enumerate(page.barcodes):
print(f"- Barcode #{barcode_idx}: {barcode.value}")
print(f" Kind: {barcode.kind}")
print(f" Confidence: {barcode.confidence}")
print(f" Bounding regions: {format_polygon(barcode.polygon)}")
Als u de languages functie toevoegt aan de analyzeResult aanvraag, wordt de gedetecteerde primaire taal voor elke tekstregel voorspeld, samen met de confidence in de languages verzameling eronder analyzeResult.
# Analyze a document at a URL:
formUrl = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/add-on-fonts_and_languages.png?raw=true"
poller = document_intelligence_client.begin_analyze_document(
"prebuilt-layout",
AnalyzeDocumentRequest(url_source=formUrl),
features=[DocumentAnalysisFeature.LANGUAGES] # Specify which add-on capabilities to enable.
)
result: AnalyzeResult = poller.result()
# [START analyze_languages]
print("----Languages detected in the document----")
if result.languages:
print(f"Detected {len(result.languages)} languages:")
for lang_idx, lang in enumerate(result.languages):
print(f"- Language #{lang_idx}: locale '{lang.locale}'")
print(f" Confidence: {lang.confidence}")
print(
f" Text: '{','.join([result.content[span.offset : span.offset + span.length] for span in lang.spans])}'"
)
# Analyze a document at a URL:
url = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/add-on/add-on-fonts_and_languages.png?raw=true"
poller = document_analysis_client.begin_analyze_document_from_url(
"prebuilt-layout", document_url=url, features=[AnalysisFeature.LANGUAGES] # Specify which add-on capabilities to enable.
)
result = poller.result()
# [START analyze_languages]
print("----Languages detected in the document----")
print(f"Detected {len(result.languages)} languages:")
for lang_idx, lang in enumerate(result.languages):
print(f"- Language #{lang_idx}: locale '{lang.locale}'")
print(f" Confidence: {lang.confidence}")
print(f" Text: '{','.join([result.content[span.offset : span.offset + span.length] for span in lang.spans])}'")
Met de doorzoekbare PDF-functie kunt u een analoge PDF, zoals gescande PDF-bestanden, converteren naar een PDF met ingesloten tekst. Met de ingesloten tekst kunt u diep zoeken in de geëxtraheerde inhoud van het PDF-bestand door de gedetecteerde tekstentiteiten boven op de afbeeldingsbestanden te plaatsen.
Belangrijk
Op dit moment wordt de doorzoekbare PDF-functie alleen ondersteund door het Read OCR-model prebuilt-read. Wanneer u deze functie gebruikt, geeft u het modelId op als prebuilt-read, omdat andere modeltypen een fout retourneren voor deze preview-versie.
Doorzoekbare PDF is opgenomen in het model 2024-07-31-preview prebuilt-read zonder gebruikskosten voor algemeen PDF-verbruik.
Doorzoekbare PDF gebruiken
Als u doorzoekbare PDF wilt gebruiken, maakt u een POST aanvraag met behulp van de Analyze bewerking en geeft u de uitvoerindeling op als pdf:
POST /documentModels/prebuilt-read:analyze?output=pdf
{...}
202
Zodra de Analyze bewerking is voltooid, dient u een GET aanvraag in om de Analyze bewerkingsresultaten op te halen.
Na een geslaagde voltooiing kan de PDF worden opgehaald en gedownload als application/pdf. Met deze bewerking kunt u direct downloaden van de ingesloten tekstvorm van PDF in plaats van met Base64 gecodeerde JSON.
// Monitor the operation until completion.
GET /documentModels/prebuilt-read/analyzeResults/{resultId}
200
{...}
// Upon successful completion, retrieve the PDF as application/pdf.
GET /documentModels/prebuilt-read/analyzeResults/{resultId}/pdf
200 OK
Content-Type: application/pdf
Sleutel-waardeparen
In eerdere API-versies heeft het vooraf samengestelde documentmodel sleutel-waardeparen uit formulieren en documenten geëxtraheerd. Met de toevoeging van de keyValuePairs functie aan vooraf gedefinieerde indeling produceert het indelingsmodel nu dezelfde resultaten.
Sleutel-waardeparen zijn specifieke spanten binnen het document waarmee een label of sleutel en de bijbehorende reactie of waarde worden geïdentificeerd. In een gestructureerd formulier kunnen deze paren het label zijn en de waarde die de gebruiker voor dat veld heeft ingevoerd. In een ongestructureerd document kunnen ze de datum zijn waarop een contract is uitgevoerd op basis van de tekst in een alinea. Het AI-model is getraind om identificeerbare sleutels en waarden te extraheren op basis van een groot aantal documenttypen, indelingen en structuren.
Sleutels kunnen ook geïsoleerd bestaan wanneer het model detecteert dat er een sleutel bestaat, zonder gekoppelde waarde of bij het verwerken van optionele velden. In sommige gevallen kan bijvoorbeeld een veld met een middelste naam leeg blijven in een formulier. Sleutel-waardeparen zijn tekstbereiken in het document. Voor documenten waarbij dezelfde waarde op verschillende manieren wordt beschreven, bijvoorbeeld klant/gebruiker, is de bijbehorende sleutel klant of gebruiker (op basis van context).
Queryvelden zijn een invoegtoepassingsmogelijkheid om het schema uit te breiden dat is geëxtraheerd uit een vooraf samengesteld model of om een specifieke sleutelnaam te definiëren wanneer de sleutelnaam variabel is. Als u queryvelden wilt gebruiken, stelt u de functies queryFields in op een door komma's gescheiden lijst met veldnamen in de queryFields eigenschap.
Document Intelligence ondersteunt nu extracties van queryvelden. Met extractie van queryvelden kunt u velden toevoegen aan het extractieproces met behulp van een queryaanvraag zonder dat u extra training nodig hebt.
Gebruik queryvelden wanneer u het schema van een vooraf gedefinieerd of aangepast model wilt uitbreiden of een paar velden wilt extraheren met de uitvoer van de indeling.
Queryvelden zijn een premium-invoegtoepassingsmogelijkheid. Voor de beste resultaten definieert u de velden die u wilt extraheren met behulp van kameel- of Pascal-hoofdletterveldnamen voor veldnamen met meerdere woorden.
Queryvelden ondersteunen maximaal 20 velden per aanvraag. Als het document een waarde voor het veld bevat, worden het veld en de waarde geretourneerd.
Deze release heeft een nieuwe implementatie van de mogelijkheid voor queryvelden die lager is dan de eerdere implementatie en moet worden gevalideerd.
Notitie
Queryveldextractie van Document Intelligence Studio is momenteel beschikbaar met de API voor indelings- en vooraf samengestelde modellen 2024-02-29-preview2023-10-31-preview en latere versies, met uitzondering van de US tax modellen (W2, 1098s en 1099s).
Queryveldextractie
Geef voor extractie van queryvelden de velden op die u wilt extraheren en Document Intelligence analyseert het document dienovereenkomstig. Hier volgt een voorbeeld:
Als u een contract in Document Intelligence Studio verwerkt, gebruikt u de 2024-02-29-preview of 2023-10-31-preview versies:
U kunt een lijst met veldlabels Party1zoals , Party2, TermsOfUse, en PaymentDatePaymentTermsTermEndDate als onderdeel van de analyze document aanvraag doorgeven.
Document Intelligence kan de veldgegevens analyseren en extraheren en de waarden retourneren in een gestructureerde JSON-uitvoer.
Naast de queryvelden bevat het antwoord tekst, tabellen, selectiemarkeringen en andere relevante gegevens.
# Analyze a document at a URL:
formUrl = "https://github.com/Azure-Samples/document-intelligence-code-samples/blob/main/Data/invoice/simple-invoice.png?raw=true"
poller = document_intelligence_client.begin_analyze_document(
"prebuilt-layout",
AnalyzeDocumentRequest(url_source=formUrl),
features=[DocumentAnalysisFeature.QUERY_FIELDS], # Specify which add-on capabilities to enable.
query_fields=["Address", "InvoiceNumber"], # Set the features and provide a comma-separated list of field names.
)
result: AnalyzeResult = poller.result()
print("Here are extra fields in result:\n")
if result.documents:
for doc in result.documents:
if doc.fields and doc.fields["Address"]:
print(f"Address: {doc.fields['Address'].value_string}")
if doc.fields and doc.fields["InvoiceNumber"]:
print(f"Invoice number: {doc.fields['InvoiceNumber'].value_string}")