FormRecognizerClient Classe
- java.
lang. Object - com.
azure. ai. formrecognizer. FormRecognizerClient
- com.
public final class FormRecognizerClient
Cette classe fournit un client synchrone pour se connecter au Form Recognizer Azure Cognitive Service.
Ce client fournit des méthodes synchrones à effectuer :
- Analyse de formulaire personnalisée : extraction et analyse de données à partir de formulaires et de documents spécifiques à des données métier et des cas d’usage distincts. Utilisez le modèle entraîné personnalisé en passant son modelId dans la beginRecognizeCustomForms méthode .
- Analyse des modèles prédéfinis : analysez les reçus, les cartes de visite, les factures et d’autres documents avec des modèles prédéfinis pris en charge Utilisez la beginRecognizeReceipts méthode pour reconnaître les informations de reçu.
- Analyse de la disposition : extraction et analyse de texte, de marques de sélection, de tableaux et de coordonnées de zone englobante à partir de formulaires et de documents. Utilisez la beginRecognizeContent(InputStream form, long length) méthode tpo pour effectuer une analyse de disposition.
- Interrogation et rappels : il inclut des mécanismes d’interrogation du service pour case activée la status d’une opération d’analyse ou l’inscription de rappels pour recevoir des notifications lorsque l’analyse est terminée.
Reportez-vous au Guide de migration pour utiliser les versions d’API 2022-08-31 et ultérieures.
Les clients de service sont le point d’interaction permettant aux développeurs d’utiliser Azure Form Recognizer. FormRecognizerClient est le client de service synchrone et FormRecognizerAsyncClient est le client de service asynchrone. Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential pour l’authentification, qui convient à la plupart des scénarios, notamment aux environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser une identité managée pour l’authentification dans les environnements de production. Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity.
Exemple : Construire un FormRecognizerClient avec DefaultAzureCredential
L’exemple de code suivant illustre la création d’un FormRecognizerClient, à l’aide de « DefaultAzureCredentialBuilder » pour le configurer.
FormRecognizerClient formRecognizerClient = new FormRecognizerClientBuilder()
.endpoint("{endpoint}")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Pour plus d’informations, consultez l’exemple de code ci-dessous à utiliser pour la AzureKeyCredential création du client.
FormRecognizerClient formRecognizerClient = new FormRecognizerClientBuilder()
.credential(new AzureKeyCredential("{key}"))
.endpoint("{endpoint}")
.buildClient();
Résumé de la méthode
Modificateur et type | Méthode et description |
---|---|
Sync |
beginRecognizeBusinessCards(InputStream businessCard, long length)
Reconnaît les données de carte métier à partir des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de carte métier prédéfini. |
Sync |
beginRecognizeBusinessCards(InputStream businessCard, long length, RecognizeBusinessCardsOptions recognizeBusinessCardsOptions, Context context)
Reconnaît les données de carte métier à partir des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de carte métier prédéfini. |
Sync |
beginRecognizeBusinessCardsFromUrl(String businessCardUrl)
Reconnaît les données de carte métier à partir d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle d’entreprise carte prédéfini. |
Sync |
beginRecognizeBusinessCardsFromUrl(String businessCardUrl, RecognizeBusinessCardsOptions recognizeBusinessCardsOptions, Context context)
Reconnaît les données de carte métier à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle d’entreprise carte prédéfini. |
Sync |
beginRecognizeContent(InputStream form, long length)
Reconnaît les données de disposition à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé. |
Sync |
beginRecognizeContent(InputStream form, long length, RecognizeContentOptions recognizeContentOptions, Context context)
Reconnaît les données de contenu/disposition des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR). |
Sync |
beginRecognizeContentFromUrl(String formUrl)
Reconnaît les données de contenu/disposition des documents à l’aide de la reconnaissance optique de caractères (OCR). |
Sync |
beginRecognizeContentFromUrl(String formUrl, RecognizeContentOptions recognizeContentOptions, Context context)
Reconnaît les données de contenu/disposition à l’aide de la reconnaissance optique de caractères (OCR). |
Sync |
beginRecognizeCustomForms(String modelId, InputStream form, long length)
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé avec ou sans étiquettes. |
Sync |
beginRecognizeCustomForms(String modelId, InputStream form, long length, RecognizeCustomFormsOptions recognizeCustomFormsOptions, Context context)
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé. |
Sync |
beginRecognizeCustomFormsFromUrl(String modelId, String formUrl)
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé avec ou sans étiquettes. |
Sync |
beginRecognizeCustomFormsFromUrl(String modelId, String formUrl, RecognizeCustomFormsOptions recognizeCustomFormsOptions, Context context)
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé. |
Sync |
beginRecognizeIdentityDocuments(InputStream identityDocument, long length)
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire les informations clés des passeports et des permis de conduire américains. |
Sync |
beginRecognizeIdentityDocuments(InputStream identityDocument, long length, RecognizeIdentityDocumentOptions recognizeIdentityDocumentOptions, Context context)
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire les informations clés des passeports et des permis de conduire américains. |
Sync |
beginRecognizeIdentityDocumentsFromUrl(String identityDocumentUrl)
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire des informations clés des passeports et des permis de conduire américains. |
Sync |
beginRecognizeIdentityDocumentsFromUrl(String identityDocumentUrl, RecognizeIdentityDocumentOptions recognizeIdentityDocumentOptions, Context context)
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire des informations clés des passeports et des permis de conduire américains. |
Sync |
beginRecognizeInvoices(InputStream invoice, long length)
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture entraîné prédéfini. |
Sync |
beginRecognizeInvoices(InputStream invoice, long length, RecognizeInvoicesOptions recognizeInvoicesOptions, Context context)
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture entraîné prédéfini. |
Sync |
beginRecognizeInvoicesFromUrl(String invoiceUrl)
Reconnaît les données de facture à partir d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture prédéfini. |
Sync |
beginRecognizeInvoicesFromUrl(String invoiceUrl, RecognizeInvoicesOptions recognizeInvoicesOptions, Context context)
Reconnaît les données de facture à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture prédéfini. |
Sync |
beginRecognizeReceipts(InputStream receipt, long length)
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de reçu formé prédéfini. |
Sync |
beginRecognizeReceipts(InputStream receipt, long length, RecognizeReceiptsOptions recognizeReceiptsOptions, Context context)
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de reçu formé prédéfini. |
Sync |
beginRecognizeReceiptsFromUrl(String receiptUrl)
Reconnaît les données de réception d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini d’apprentissage du reçu. |
Sync |
beginRecognizeReceiptsFromUrl(String receiptUrl, RecognizeReceiptsOptions recognizeReceiptsOptions, Context context)
Reconnaît les données de réception des documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini d’apprentissage du reçu. |
Méthodes héritées de java.lang.Object
Détails de la méthode
beginRecognizeBusinessCards
public SyncPoller
Reconnaît les données de carte métier à partir des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de carte métier prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un carte d’entreprise.
Code sample
File businessCard = new File("{local/file_path/fileName.jpg}");
byte[] fileContent = Files.readAllBytes(businessCard.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
formRecognizerClient.beginRecognizeBusinessCards(targetStream, businessCard.length()).getFinalResult()
.forEach(recognizedBusinessCard -> {
Map<String, FormField> recognizedFields = recognizedBusinessCard.getFields();
FormField contactNamesFormField = recognizedFields.get("ContactNames");
if (contactNamesFormField != null) {
if (FieldValueType.LIST == contactNamesFormField.getValue().getValueType()) {
List<FormField> contactNamesList = contactNamesFormField.getValue().asList();
contactNamesList.stream()
.filter(contactName -> FieldValueType.MAP == contactName.getValue().getValueType())
.map(contactName -> {
System.out.printf("Contact name: %s%n", contactName.getValueData().getText());
return contactName.getValue().asMap();
})
.forEach(contactNamesMap -> contactNamesMap.forEach((key, contactName) -> {
if ("FirstName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String firstName = contactName.getValue().asString();
System.out.printf("\tFirst Name: %s, confidence: %.2f%n",
firstName, contactName.getConfidence());
}
}
if ("LastName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String lastName = contactName.getValue().asString();
System.out.printf("\tLast Name: %s, confidence: %.2f%n",
lastName, contactName.getConfidence());
}
}
}));
}
}
FormField jobTitles = recognizedFields.get("JobTitles");
if (jobTitles != null) {
if (FieldValueType.LIST == jobTitles.getValue().getValueType()) {
List<FormField> jobTitlesItems = jobTitles.getValue().asList();
jobTitlesItems.forEach(jobTitlesItem -> {
if (FieldValueType.STRING == jobTitlesItem.getValue().getValueType()) {
String jobTitle = jobTitlesItem.getValue().asString();
System.out.printf("Job Title: %s, confidence: %.2f%n",
jobTitle, jobTitlesItem.getConfidence());
}
});
}
}
});
}
Parameters:
Returns:
beginRecognizeBusinessCards
public SyncPoller
Reconnaît les données de carte métier à partir des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de carte métier prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un carte d’entreprise.
Code sample
File businessCard = new File("{local/file_path/fileName.jpg}");
boolean includeFieldElements = true;
byte[] fileContent = Files.readAllBytes(businessCard.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
for (RecognizedForm recognizedForm : formRecognizerClient.beginRecognizeBusinessCards(targetStream,
businessCard.length(),
new RecognizeBusinessCardsOptions()
.setContentType(FormContentType.IMAGE_JPEG)
.setFieldElementsIncluded(includeFieldElements),
Context.NONE).setPollInterval(Duration.ofSeconds(5))
.getFinalResult()) {
Map<String, FormField> recognizedFields = recognizedForm.getFields();
FormField contactNamesFormField = recognizedFields.get("ContactNames");
if (contactNamesFormField != null) {
if (FieldValueType.LIST == contactNamesFormField.getValue().getValueType()) {
List<FormField> contactNamesList = contactNamesFormField.getValue().asList();
contactNamesList.stream()
.filter(contactName -> FieldValueType.MAP == contactName.getValue().getValueType())
.map(contactName -> {
System.out.printf("Contact name: %s%n", contactName.getValueData().getText());
return contactName.getValue().asMap();
})
.forEach(contactNamesMap -> contactNamesMap.forEach((key, contactName) -> {
if ("FirstName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String firstName = contactName.getValue().asString();
System.out.printf("\tFirst Name: %s, confidence: %.2f%n",
firstName, contactName.getConfidence());
}
}
if ("LastName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String lastName = contactName.getValue().asString();
System.out.printf("\tLast Name: %s, confidence: %.2f%n",
lastName, contactName.getConfidence());
}
}
}));
}
}
FormField jobTitles = recognizedFields.get("JobTitles");
if (jobTitles != null) {
if (FieldValueType.LIST == jobTitles.getValue().getValueType()) {
List<FormField> jobTitlesItems = jobTitles.getValue().asList();
jobTitlesItems.forEach(jobTitlesItem -> {
if (FieldValueType.STRING == jobTitlesItem.getValue().getValueType()) {
String jobTitle = jobTitlesItem.getValue().asString();
System.out.printf("Job Title: %s, confidence: %.2f%n",
jobTitle, jobTitlesItem.getConfidence());
}
});
}
}
}
}
Parameters:
Returns:
beginRecognizeBusinessCardsFromUrl
public SyncPoller
Reconnaît les données de carte métier à partir d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle d’entreprise carte prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un carte d’entreprise.
Code sample
String businessCardUrl = "{business_card_url}";
formRecognizerClient.beginRecognizeBusinessCardsFromUrl(businessCardUrl)
.getFinalResult()
.forEach(recognizedBusinessCard -> {
Map<String, FormField> recognizedFields = recognizedBusinessCard.getFields();
FormField contactNamesFormField = recognizedFields.get("ContactNames");
if (contactNamesFormField != null) {
if (FieldValueType.LIST == contactNamesFormField.getValue().getValueType()) {
List<FormField> contactNamesList = contactNamesFormField.getValue().asList();
contactNamesList.stream()
.filter(contactName -> FieldValueType.MAP == contactName.getValue().getValueType())
.map(contactName -> {
System.out.printf("Contact name: %s%n", contactName.getValueData().getText());
return contactName.getValue().asMap();
})
.forEach(contactNamesMap -> contactNamesMap.forEach((key, contactName) -> {
if ("FirstName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String firstName = contactName.getValue().asString();
System.out.printf("\tFirst Name: %s, confidence: %.2f%n",
firstName, contactName.getConfidence());
}
}
if ("LastName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String lastName = contactName.getValue().asString();
System.out.printf("\tLast Name: %s, confidence: %.2f%n",
lastName, contactName.getConfidence());
}
}
}));
}
}
FormField jobTitles = recognizedFields.get("JobTitles");
if (jobTitles != null) {
if (FieldValueType.LIST == jobTitles.getValue().getValueType()) {
List<FormField> jobTitlesItems = jobTitles.getValue().asList();
jobTitlesItems.forEach(jobTitlesItem -> {
if (FieldValueType.STRING == jobTitlesItem.getValue().getValueType()) {
String jobTitle = jobTitlesItem.getValue().asString();
System.out.printf("Job Title: %s, confidence: %.2f%n",
jobTitle, jobTitlesItem.getConfidence());
}
});
}
}
});
Parameters:
Returns:
beginRecognizeBusinessCardsFromUrl
public SyncPoller
Reconnaît les données de carte métier à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle d’entreprise carte prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un carte d’entreprise.
Code sample
String businessCardUrl = "{business_card_url}";
formRecognizerClient.beginRecognizeBusinessCardsFromUrl(businessCardUrl,
new RecognizeBusinessCardsOptions()
.setFieldElementsIncluded(true), Context.NONE)
.setPollInterval(Duration.ofSeconds(5)).getFinalResult()
.forEach(recognizedBusinessCard -> {
Map<String, FormField> recognizedFields = recognizedBusinessCard.getFields();
FormField contactNamesFormField = recognizedFields.get("ContactNames");
if (contactNamesFormField != null) {
if (FieldValueType.LIST == contactNamesFormField.getValue().getValueType()) {
List<FormField> contactNamesList = contactNamesFormField.getValue().asList();
contactNamesList.stream()
.filter(contactName -> FieldValueType.MAP == contactName.getValue().getValueType())
.map(contactName -> {
System.out.printf("Contact name: %s%n", contactName.getValueData().getText());
return contactName.getValue().asMap();
})
.forEach(contactNamesMap -> contactNamesMap.forEach((key, contactName) -> {
if ("FirstName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String firstName = contactName.getValue().asString();
System.out.printf("\tFirst Name: %s, confidence: %.2f%n",
firstName, contactName.getConfidence());
}
}
if ("LastName".equals(key)) {
if (FieldValueType.STRING == contactName.getValue().getValueType()) {
String lastName = contactName.getValue().asString();
System.out.printf("\tLast Name: %s, confidence: %.2f%n",
lastName, contactName.getConfidence());
}
}
}));
}
}
FormField jobTitles = recognizedFields.get("JobTitles");
if (jobTitles != null) {
if (FieldValueType.LIST == jobTitles.getValue().getValueType()) {
List<FormField> jobTitlesItems = jobTitles.getValue().asList();
jobTitlesItems.forEach(jobTitlesItem -> {
if (FieldValueType.STRING == jobTitlesItem.getValue().getValueType()) {
String jobTitle = jobTitlesItem.getValue().asString();
System.out.printf("Job Title: %s, confidence: %.2f%n",
jobTitle, jobTitlesItem.getConfidence());
}
});
}
}
});
Parameters:
Returns:
beginRecognizeContent
public SyncPoller
Reconnaît les données de disposition à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation.
Code sample
File form = new File("{local/file_path/fileName.pdf}");
byte[] fileContent = Files.readAllBytes(form.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
formRecognizerClient.beginRecognizeContent(targetStream, form.length())
.getFinalResult()
.forEach(formPage -> {
System.out.printf("Page Angle: %s%n", formPage.getTextAngle());
System.out.printf("Page Dimension unit: %s%n", formPage.getUnit());
// Table information
System.out.println("Recognized Tables: ");
formPage.getTables()
.stream()
.flatMap(formTable -> formTable.getCells().stream())
.forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText()));
});
}
Parameters:
Returns:
beginRecognizeContent
public SyncPoller
Reconnaît les données de contenu/disposition des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR).
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
La reconnaissance de contenu prend en charge l’identification automatique de la langue et les documents multilingues. Par conséquent, fournissez un code de langue uniquement si vous souhaitez forcer le traitement du document en tant que langue spécifique dans le RecognizeContentOptions.
Code sample
File form = new File("{file_source_url}");
byte[] fileContent = Files.readAllBytes(form.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
for (FormPage formPage : formRecognizerClient.beginRecognizeContent(targetStream, form.length(),
new RecognizeContentOptions()
.setPollInterval(Duration.ofSeconds(5)), Context.NONE)
.getFinalResult()) {
System.out.printf("Page Angle: %s%n", formPage.getTextAngle());
System.out.printf("Page Dimension unit: %s%n", formPage.getUnit());
// Table information
System.out.println("Recognized Tables: ");
formPage.getTables()
.stream()
.flatMap(formTable -> formTable.getCells().stream())
.forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText()));
}
}
Parameters:
Returns:
beginRecognizeContentFromUrl
public SyncPoller
Reconnaît les données de contenu/disposition des documents à l’aide de la reconnaissance optique de caractères (OCR).
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation.
Code sample
String formUrl = "{form_url}";
formRecognizerClient.beginRecognizeContentFromUrl(formUrl)
.getFinalResult()
.forEach(formPage -> {
System.out.printf("Page Angle: %s%n", formPage.getTextAngle());
System.out.printf("Page Dimension unit: %s%n", formPage.getUnit());
// Table information
System.out.println("Recognized Tables: ");
formPage.getTables()
.stream()
.flatMap(formTable -> formTable.getCells().stream())
.forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText()));
});
Parameters:
Returns:
beginRecognizeContentFromUrl
public SyncPoller
Reconnaît les données de contenu/disposition à l’aide de la reconnaissance optique de caractères (OCR).
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation.
La reconnaissance de contenu prend en charge l’identification automatique de la langue et les documents multilingues. Par conséquent, fournissez un code de langue uniquement si vous souhaitez forcer le traitement du document en tant que langue spécifique dans le RecognizeContentOptions.
Code sample
String formPath = "{file_source_url}";
formRecognizerClient.beginRecognizeContentFromUrl(formPath,
new RecognizeContentOptions()
.setPollInterval(Duration.ofSeconds(5)), Context.NONE)
.getFinalResult()
.forEach(formPage -> {
System.out.printf("Page Angle: %s%n", formPage.getTextAngle());
System.out.printf("Page Dimension unit: %s%n", formPage.getUnit());
// Table information
System.out.println("Recognized Tables: ");
formPage.getTables()
.stream()
.flatMap(formTable -> formTable.getCells().stream())
.forEach(recognizedTableCell -> System.out.printf("%s ", recognizedTableCell.getText()));
});
Parameters:
Returns:
beginRecognizeCustomForms
public SyncPoller
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé avec ou sans étiquettes.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation.
Code sample
File form = new File("{local/file_path/fileName.jpg}");
String modelId = "{custom_trained_model_id}";
byte[] fileContent = Files.readAllBytes(form.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
formRecognizerClient.beginRecognizeCustomForms(modelId, targetStream, form.length())
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(formFieldMap -> formFieldMap.forEach((fieldText, formField) -> {
System.out.printf("Field text: %s%n", fieldText);
System.out.printf("Field value data text: %s%n", formField.getValueData().getText());
System.out.printf("Confidence score: %.2f%n", formField.getConfidence());
}));
}
Parameters:
Returns:
beginRecognizeCustomForms
public SyncPoller
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation.
Code sample
File form = new File("{local/file_path/fileName.jpg}");
String modelId = "{custom_trained_model_id}";
boolean includeFieldElements = true;
byte[] fileContent = Files.readAllBytes(form.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
formRecognizerClient.beginRecognizeCustomForms(modelId, targetStream, form.length(),
new RecognizeCustomFormsOptions()
.setContentType(FormContentType.IMAGE_JPEG)
.setFieldElementsIncluded(includeFieldElements)
.setPollInterval(Duration.ofSeconds(10)), Context.NONE)
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(formFieldMap -> formFieldMap.forEach((fieldText, formField) -> {
System.out.printf("Field text: %s%n", fieldText);
System.out.printf("Field value data text: %s%n", formField.getValueData().getText());
System.out.printf("Confidence score: %.2f%n", formField.getConfidence());
}));
}
Parameters:
Returns:
beginRecognizeCustomFormsFromUrl
public SyncPoller
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé avec ou sans étiquettes.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String formUrl = "{form_url}";
String modelId = "{custom_trained_model_id}";
formRecognizerClient.beginRecognizeCustomFormsFromUrl(modelId, formUrl).getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(formFieldMap -> formFieldMap.forEach((fieldText, formField) -> {
System.out.printf("Field text: %s%n", fieldText);
System.out.printf("Field value data text: %s%n", formField.getValueData().getText());
System.out.printf("Confidence score: %.2f%n", formField.getConfidence());
}));
Parameters:
Returns:
beginRecognizeCustomFormsFromUrl
public SyncPoller
Reconnaît les données de formulaire à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle entraîné personnalisé.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String analyzeFilePath = "{file_source_url}";
String modelId = "{model_id}";
boolean includeFieldElements = true;
formRecognizerClient.beginRecognizeCustomFormsFromUrl(modelId, analyzeFilePath,
new RecognizeCustomFormsOptions()
.setFieldElementsIncluded(includeFieldElements)
.setPollInterval(Duration.ofSeconds(10)), Context.NONE)
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(formFieldMap -> formFieldMap.forEach((fieldText, formField) -> {
System.out.printf("Field text: %s%n", fieldText);
System.out.printf("Field value data text: %s%n", formField.getValueData().getText());
System.out.printf("Confidence score: %.2f%n", formField.getConfidence());
}));
Parameters:
Returns:
beginRecognizeIdentityDocuments
public SyncPoller
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire les informations clés des passeports et des permis de conduire américains. Voir ici pour les champs trouvés sur un document d’identité.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
File license = new File("local/file_path/license.jpg");
ByteArrayInputStream inputStream = new ByteArrayInputStream(Files.readAllBytes(license.toPath()));
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeIdentityDocuments(inputStream, license.length())
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField firstNameField = recognizedFields.get("FirstName");
if (firstNameField != null) {
if (FieldValueType.STRING == firstNameField.getValue().getValueType()) {
String firstName = firstNameField.getValue().asString();
System.out.printf("First Name: %s, confidence: %.2f%n",
firstName, firstNameField.getConfidence());
}
}
FormField lastNameField = recognizedFields.get("LastName");
if (lastNameField != null) {
if (FieldValueType.STRING == lastNameField.getValue().getValueType()) {
String lastName = lastNameField.getValue().asString();
System.out.printf("Last name: %s, confidence: %.2f%n",
lastName, lastNameField.getConfidence());
}
}
FormField countryRegionFormField = recognizedFields.get("CountryRegion");
if (countryRegionFormField != null) {
if (FieldValueType.STRING == countryRegionFormField.getValue().getValueType()) {
String countryRegion = countryRegionFormField.getValue().asCountryRegion();
System.out.printf("Country or region: %s, confidence: %.2f%n",
countryRegion, countryRegionFormField.getConfidence());
}
}
FormField dateOfExpirationField = recognizedFields.get("DateOfExpiration");
if (dateOfExpirationField != null) {
if (FieldValueType.DATE == dateOfExpirationField.getValue().getValueType()) {
LocalDate expirationDate = dateOfExpirationField.getValue().asDate();
System.out.printf("Document date of expiration: %s, confidence: %.2f%n",
expirationDate, dateOfExpirationField.getConfidence());
}
}
FormField documentNumberField = recognizedFields.get("DocumentNumber");
if (documentNumberField != null) {
if (FieldValueType.STRING == documentNumberField.getValue().getValueType()) {
String documentNumber = documentNumberField.getValue().asString();
System.out.printf("Document number: %s, confidence: %.2f%n",
documentNumber, documentNumberField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeIdentityDocuments
public SyncPoller
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire les informations clés des passeports et des permis de conduire américains. Voir ici pour les champs trouvés sur un document d’identité.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
File licenseDocument = new File("local/file_path/license.jpg");
boolean includeFieldElements = true;
// Utility method to convert input stream to Byte buffer
ByteArrayInputStream inputStream = new ByteArrayInputStream(Files.readAllBytes(licenseDocument.toPath()));
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeIdentityDocuments(inputStream,
licenseDocument.length(),
new RecognizeIdentityDocumentOptions()
.setContentType(FormContentType.IMAGE_JPEG)
.setFieldElementsIncluded(includeFieldElements),
Context.NONE)
.setPollInterval(Duration.ofSeconds(5))
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField firstNameField = recognizedFields.get("FirstName");
if (firstNameField != null) {
if (FieldValueType.STRING == firstNameField.getValue().getValueType()) {
String firstName = firstNameField.getValue().asString();
System.out.printf("First Name: %s, confidence: %.2f%n",
firstName, firstNameField.getConfidence());
}
}
FormField lastNameField = recognizedFields.get("LastName");
if (lastNameField != null) {
if (FieldValueType.STRING == lastNameField.getValue().getValueType()) {
String lastName = lastNameField.getValue().asString();
System.out.printf("Last name: %s, confidence: %.2f%n",
lastName, lastNameField.getConfidence());
}
}
FormField countryRegionFormField = recognizedFields.get("CountryRegion");
if (countryRegionFormField != null) {
if (FieldValueType.STRING == countryRegionFormField.getValue().getValueType()) {
String countryRegion = countryRegionFormField.getValue().asCountryRegion();
System.out.printf("Country or region: %s, confidence: %.2f%n",
countryRegion, countryRegionFormField.getConfidence());
}
}
FormField dateOfBirthField = recognizedFields.get("DateOfBirth");
if (dateOfBirthField != null) {
if (FieldValueType.DATE == dateOfBirthField.getValue().getValueType()) {
LocalDate dateOfBirth = dateOfBirthField.getValue().asDate();
System.out.printf("Date of Birth: %s, confidence: %.2f%n",
dateOfBirth, dateOfBirthField.getConfidence());
}
}
FormField dateOfExpirationField = recognizedFields.get("DateOfExpiration");
if (dateOfExpirationField != null) {
if (FieldValueType.DATE == dateOfExpirationField.getValue().getValueType()) {
LocalDate expirationDate = dateOfExpirationField.getValue().asDate();
System.out.printf("Document date of expiration: %s, confidence: %.2f%n",
expirationDate, dateOfExpirationField.getConfidence());
}
}
FormField documentNumberField = recognizedFields.get("DocumentNumber");
if (documentNumberField != null) {
if (FieldValueType.STRING == documentNumberField.getValue().getValueType()) {
String documentNumber = documentNumberField.getValue().asString();
System.out.printf("Document number: %s, confidence: %.2f%n",
documentNumber, documentNumberField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeIdentityDocumentsFromUrl
public SyncPoller
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire des informations clés des passeports et des permis de conduire américains. Consultez ici les champs trouvés dans un document d’identité.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String licenseDocumentUrl = "licenseDocumentUrl";
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeIdentityDocumentsFromUrl(licenseDocumentUrl)
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField firstNameField = recognizedFields.get("FirstName");
if (firstNameField != null) {
if (FieldValueType.STRING == firstNameField.getValue().getValueType()) {
String firstName = firstNameField.getValue().asString();
System.out.printf("First Name: %s, confidence: %.2f%n",
firstName, firstNameField.getConfidence());
}
}
FormField lastNameField = recognizedFields.get("LastName");
if (lastNameField != null) {
if (FieldValueType.STRING == lastNameField.getValue().getValueType()) {
String lastName = lastNameField.getValue().asString();
System.out.printf("Last name: %s, confidence: %.2f%n",
lastName, lastNameField.getConfidence());
}
}
FormField countryRegionFormField = recognizedFields.get("CountryRegion");
if (countryRegionFormField != null) {
if (FieldValueType.STRING == countryRegionFormField.getValue().getValueType()) {
String countryRegion = countryRegionFormField.getValue().asCountryRegion();
System.out.printf("Country or region: %s, confidence: %.2f%n",
countryRegion, countryRegionFormField.getConfidence());
}
}
FormField dateOfBirthField = recognizedFields.get("DateOfBirth");
if (dateOfBirthField != null) {
if (FieldValueType.DATE == dateOfBirthField.getValue().getValueType()) {
LocalDate dateOfBirth = dateOfBirthField.getValue().asDate();
System.out.printf("Date of Birth: %s, confidence: %.2f%n",
dateOfBirth, dateOfBirthField.getConfidence());
}
}
FormField dateOfExpirationField = recognizedFields.get("DateOfExpiration");
if (dateOfExpirationField != null) {
if (FieldValueType.DATE == dateOfExpirationField.getValue().getValueType()) {
LocalDate expirationDate = dateOfExpirationField.getValue().asDate();
System.out.printf("Document date of expiration: %s, confidence: %.2f%n",
expirationDate, dateOfExpirationField.getConfidence());
}
}
FormField documentNumberField = recognizedFields.get("DocumentNumber");
if (documentNumberField != null) {
if (FieldValueType.STRING == documentNumberField.getValue().getValueType()) {
String documentNumber = documentNumberField.getValue().asString();
System.out.printf("Document number: %s, confidence: %.2f%n",
documentNumber, documentNumberField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeIdentityDocumentsFromUrl
public SyncPoller
Analysez les documents d’identité à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini formé sur le modèle de documents d’identité pour extraire des informations clés des passeports et des permis de conduire américains. Consultez ici les champs trouvés dans un document d’identité.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String licenseDocumentUrl = "licenseDocumentUrl";
boolean includeFieldElements = true;
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeIdentityDocumentsFromUrl(licenseDocumentUrl,
new RecognizeIdentityDocumentOptions()
.setFieldElementsIncluded(includeFieldElements),
Context.NONE).setPollInterval(Duration.ofSeconds(5))
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField firstNameField = recognizedFields.get("FirstName");
if (firstNameField != null) {
if (FieldValueType.STRING == firstNameField.getValue().getValueType()) {
String firstName = firstNameField.getValue().asString();
System.out.printf("First Name: %s, confidence: %.2f%n",
firstName, firstNameField.getConfidence());
}
}
FormField lastNameField = recognizedFields.get("LastName");
if (lastNameField != null) {
if (FieldValueType.STRING == lastNameField.getValue().getValueType()) {
String lastName = lastNameField.getValue().asString();
System.out.printf("Last name: %s, confidence: %.2f%n",
lastName, lastNameField.getConfidence());
}
}
FormField countryRegionFormField = recognizedFields.get("CountryRegion");
if (countryRegionFormField != null) {
if (FieldValueType.STRING == countryRegionFormField.getValue().getValueType()) {
String countryRegion = countryRegionFormField.getValue().asCountryRegion();
System.out.printf("Country or region: %s, confidence: %.2f%n",
countryRegion, countryRegionFormField.getConfidence());
}
}
FormField dateOfExpirationField = recognizedFields.get("DateOfExpiration");
if (dateOfExpirationField != null) {
if (FieldValueType.DATE == dateOfExpirationField.getValue().getValueType()) {
LocalDate expirationDate = dateOfExpirationField.getValue().asDate();
System.out.printf("Document date of expiration: %s, confidence: %.2f%n",
expirationDate, dateOfExpirationField.getConfidence());
}
}
FormField documentNumberField = recognizedFields.get("DocumentNumber");
if (documentNumberField != null) {
if (FieldValueType.STRING == documentNumberField.getValue().getValueType()) {
String documentNumber = documentNumberField.getValue().asString();
System.out.printf("Document number: %s, confidence: %.2f%n",
documentNumber, documentNumberField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeInvoices
public SyncPoller
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture entraîné prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur une facture.
Code sample
File invoice = new File("local/file_path/invoice.jpg");
ByteArrayInputStream inputStream = new ByteArrayInputStream(Files.readAllBytes(invoice.toPath()));
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeInvoices(inputStream, invoice.length())
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField customAddrFormField = recognizedFields.get("CustomerAddress");
if (customAddrFormField != null) {
if (FieldValueType.STRING == customAddrFormField.getValue().getValueType()) {
System.out.printf("Customer Address: %s%n", customAddrFormField.getValue().asString());
}
}
FormField invoiceDateFormField = recognizedFields.get("InvoiceDate");
if (invoiceDateFormField != null) {
if (FieldValueType.DATE == invoiceDateFormField.getValue().getValueType()) {
LocalDate invoiceDate = invoiceDateFormField.getValue().asDate();
System.out.printf("Invoice Date: %s, confidence: %.2f%n",
invoiceDate, invoiceDateFormField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeInvoices
public SyncPoller
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture entraîné prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur une facture.
Code sample
File invoice = new File("local/file_path/invoice.jpg");
boolean includeFieldElements = true;
// Utility method to convert input stream to Byte buffer
ByteArrayInputStream inputStream = new ByteArrayInputStream(Files.readAllBytes(invoice.toPath()));
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeInvoices(inputStream,
invoice.length(),
new RecognizeInvoicesOptions()
.setContentType(FormContentType.IMAGE_JPEG)
.setFieldElementsIncluded(includeFieldElements),
Context.NONE)
.setPollInterval(Duration.ofSeconds(5))
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField customAddrFormField = recognizedFields.get("CustomerAddress");
if (customAddrFormField != null) {
if (FieldValueType.STRING == customAddrFormField.getValue().getValueType()) {
System.out.printf("Customer Address: %s%n", customAddrFormField.getValue().asString());
}
}
FormField invoiceDateFormField = recognizedFields.get("InvoiceDate");
if (invoiceDateFormField != null) {
if (FieldValueType.DATE == invoiceDateFormField.getValue().getValueType()) {
LocalDate invoiceDate = invoiceDateFormField.getValue().asDate();
System.out.printf("Invoice Date: %s, confidence: %.2f%n",
invoiceDate, invoiceDateFormField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeInvoicesFromUrl
public SyncPoller
Reconnaît les données de facture à partir d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur une facture.
Code sample
String invoiceUrl = "invoice_url";
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeInvoicesFromUrl(invoiceUrl)
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField customAddrFormField = recognizedFields.get("CustomerAddress");
if (customAddrFormField != null) {
if (FieldValueType.STRING == customAddrFormField.getValue().getValueType()) {
System.out.printf("Customer Address: %s%n", customAddrFormField.getValue().asString());
}
}
FormField invoiceDateFormField = recognizedFields.get("InvoiceDate");
if (invoiceDateFormField != null) {
if (FieldValueType.DATE == invoiceDateFormField.getValue().getValueType()) {
LocalDate invoiceDate = invoiceDateFormField.getValue().asDate();
System.out.printf("Invoice Date: %s, confidence: %.2f%n",
invoiceDate, invoiceDateFormField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeInvoicesFromUrl
public SyncPoller
Reconnaît les données de facture à partir de documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de facture prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String invoiceUrl = "invoice_url";
boolean includeFieldElements = true;
// if training polling operation completed, retrieve the final result.
formRecognizerClient.beginRecognizeInvoicesFromUrl(invoiceUrl,
new RecognizeInvoicesOptions()
.setFieldElementsIncluded(includeFieldElements),
Context.NONE).setPollInterval(Duration.ofSeconds(5))
.getFinalResult()
.stream()
.map(RecognizedForm::getFields)
.forEach(recognizedFields -> {
FormField customAddrFormField = recognizedFields.get("CustomerAddress");
if (customAddrFormField != null) {
if (FieldValueType.STRING == customAddrFormField.getValue().getValueType()) {
System.out.printf("Customer Address: %s%n", customAddrFormField.getValue().asString());
}
}
FormField invoiceDateFormField = recognizedFields.get("InvoiceDate");
if (invoiceDateFormField != null) {
if (FieldValueType.DATE == invoiceDateFormField.getValue().getValueType()) {
LocalDate invoiceDate = invoiceDateFormField.getValue().asDate();
System.out.printf("Invoice Date: %s, confidence: %.2f%n",
invoiceDate, invoiceDateFormField.getConfidence());
}
}
});
Parameters:
Returns:
beginRecognizeReceipts
public SyncPoller
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de reçu formé prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un reçu.
Code sample
File receipt = new File("{receipt_url}");
byte[] fileContent = Files.readAllBytes(receipt.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
formRecognizerClient.beginRecognizeReceipts(targetStream, receipt.length()).getFinalResult()
.forEach(recognizedReceipt -> {
Map<String, FormField> recognizedFields = recognizedReceipt.getFields();
FormField merchantNameField = recognizedFields.get("MerchantName");
if (merchantNameField != null) {
if (FieldValueType.STRING == merchantNameField.getValue().getValueType()) {
String merchantName = merchantNameField.getValue().asString();
System.out.printf("Merchant Name: %s, confidence: %.2f%n",
merchantName, merchantNameField.getConfidence());
}
}
FormField merchantPhoneNumberField = recognizedFields.get("MerchantPhoneNumber");
if (merchantPhoneNumberField != null) {
if (FieldValueType.PHONE_NUMBER == merchantPhoneNumberField.getValue().getValueType()) {
String merchantAddress = merchantPhoneNumberField.getValue().asPhoneNumber();
System.out.printf("Merchant Phone number: %s, confidence: %.2f%n",
merchantAddress, merchantPhoneNumberField.getConfidence());
}
}
FormField transactionDateField = recognizedFields.get("TransactionDate");
if (transactionDateField != null) {
if (FieldValueType.DATE == transactionDateField.getValue().getValueType()) {
LocalDate transactionDate = transactionDateField.getValue().asDate();
System.out.printf("Transaction Date: %s, confidence: %.2f%n",
transactionDate, transactionDateField.getConfidence());
}
}
FormField receiptItemsField = recognizedFields.get("Items");
if (receiptItemsField != null) {
System.out.printf("Receipt Items: %n");
if (FieldValueType.LIST == receiptItemsField.getValue().getValueType()) {
List<FormField> receiptItems = receiptItemsField.getValue().asList();
receiptItems.stream()
.filter(receiptItem -> FieldValueType.MAP == receiptItem.getValue().getValueType())
.map(formField -> formField.getValue().asMap())
.forEach(formFieldMap -> formFieldMap.forEach((key, formField) -> {
if ("Quantity".equals(key)) {
if (FieldValueType.FLOAT == formField.getValue().getValueType()) {
Float quantity = formField.getValue().asFloat();
System.out.printf("Quantity: %f, confidence: %.2f%n",
quantity, formField.getConfidence());
}
}
}));
}
}
});
}
Parameters:
Returns:
beginRecognizeReceipts
public SyncPoller
Reconnaît les données des données de document fournies à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle de reçu formé prédéfini.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un reçu.
Code sample
File receipt = new File("{local/file_path/fileName.jpg}");
boolean includeFieldElements = true;
byte[] fileContent = Files.readAllBytes(receipt.toPath());
try (InputStream targetStream = new ByteArrayInputStream(fileContent)) {
for (RecognizedForm recognizedForm : formRecognizerClient
.beginRecognizeReceipts(targetStream, receipt.length(),
new RecognizeReceiptsOptions()
.setContentType(FormContentType.IMAGE_JPEG)
.setFieldElementsIncluded(includeFieldElements)
.setLocale(FormRecognizerLocale.EN_US)
.setPollInterval(Duration.ofSeconds(5)), Context.NONE)
.getFinalResult()) {
Map<String, FormField> recognizedFields = recognizedForm.getFields();
FormField merchantNameField = recognizedFields.get("MerchantName");
if (merchantNameField != null) {
if (FieldValueType.STRING == merchantNameField.getValue().getValueType()) {
String merchantName = merchantNameField.getValue().asString();
System.out.printf("Merchant Name: %s, confidence: %.2f%n",
merchantName, merchantNameField.getConfidence());
}
}
FormField merchantPhoneNumberField = recognizedFields.get("MerchantPhoneNumber");
if (merchantPhoneNumberField != null) {
if (FieldValueType.PHONE_NUMBER == merchantPhoneNumberField.getValue().getValueType()) {
String merchantAddress = merchantPhoneNumberField.getValue().asPhoneNumber();
System.out.printf("Merchant Phone number: %s, confidence: %.2f%n",
merchantAddress, merchantPhoneNumberField.getConfidence());
}
}
FormField transactionDateField = recognizedFields.get("TransactionDate");
if (transactionDateField != null) {
if (FieldValueType.DATE == transactionDateField.getValue().getValueType()) {
LocalDate transactionDate = transactionDateField.getValue().asDate();
System.out.printf("Transaction Date: %s, confidence: %.2f%n",
transactionDate, transactionDateField.getConfidence());
}
}
FormField receiptItemsField = recognizedFields.get("Items");
if (receiptItemsField != null) {
System.out.printf("Receipt Items: %n");
if (FieldValueType.LIST == receiptItemsField.getValue().getValueType()) {
List<FormField> receiptItems = receiptItemsField.getValue().asList();
receiptItems.stream()
.filter(receiptItem -> FieldValueType.MAP == receiptItem.getValue().getValueType())
.map(formField -> formField.getValue().asMap())
.forEach(formFieldMap -> formFieldMap.forEach((key, formField) -> {
if ("Quantity".equals(key)) {
if (FieldValueType.FLOAT == formField.getValue().getValueType()) {
Float quantity = formField.getValue().asFloat();
System.out.printf("Quantity: %f, confidence: %.2f%n",
quantity, formField.getConfidence());
}
}
}));
}
}
}
}
Parameters:
Returns:
beginRecognizeReceiptsFromUrl
public SyncPoller
Reconnaît les données de réception d’un document à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini d’apprentissage du reçu.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Consultez ici les champs trouvés sur un reçu.
Code sample
String receiptUrl = "{file_source_url}";
formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl)
.getFinalResult()
.forEach(recognizedReceipt -> {
Map<String, FormField> recognizedFields = recognizedReceipt.getFields();
FormField merchantNameField = recognizedFields.get("MerchantName");
if (merchantNameField != null) {
if (FieldValueType.STRING == merchantNameField.getValue().getValueType()) {
String merchantName = merchantNameField.getValue().asString();
System.out.printf("Merchant Name: %s, confidence: %.2f%n",
merchantName, merchantNameField.getConfidence());
}
}
FormField merchantPhoneNumberField = recognizedFields.get("MerchantPhoneNumber");
if (merchantPhoneNumberField != null) {
if (FieldValueType.PHONE_NUMBER == merchantPhoneNumberField.getValue().getValueType()) {
String merchantAddress = merchantPhoneNumberField.getValue().asPhoneNumber();
System.out.printf("Merchant Phone number: %s, confidence: %.2f%n",
merchantAddress, merchantPhoneNumberField.getConfidence());
}
}
FormField transactionDateField = recognizedFields.get("TransactionDate");
if (transactionDateField != null) {
if (FieldValueType.DATE == transactionDateField.getValue().getValueType()) {
LocalDate transactionDate = transactionDateField.getValue().asDate();
System.out.printf("Transaction Date: %s, confidence: %.2f%n",
transactionDate, transactionDateField.getConfidence());
}
}
FormField receiptItemsField = recognizedFields.get("Items");
if (receiptItemsField != null) {
System.out.printf("Receipt Items: %n");
if (FieldValueType.LIST == receiptItemsField.getValue().getValueType()) {
List<FormField> receiptItems = receiptItemsField.getValue().asList();
receiptItems.stream()
.filter(receiptItem -> FieldValueType.MAP == receiptItem.getValue().getValueType())
.map(formField -> formField.getValue().asMap())
.forEach(formFieldMap -> formFieldMap.forEach((key, formField) -> {
if ("Quantity".equals(key)) {
if (FieldValueType.FLOAT == formField.getValue().getValueType()) {
Float quantity = formField.getValue().asFloat();
System.out.printf("Quantity: %f, confidence: %.2f%n",
quantity, formField.getConfidence());
}
}
}));
}
}
});
Parameters:
Returns:
beginRecognizeReceiptsFromUrl
public SyncPoller
Reconnaît les données de réception des documents à l’aide de la reconnaissance optique de caractères (OCR) et d’un modèle prédéfini d’apprentissage du reçu.
Le service ne prend pas en charge l’annulation de l’opération de longue durée et retourne avec un message d’erreur indiquant l’absence de prise en charge de l’annulation
Code sample
String receiptUrl = "{receipt_url}";
formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl,
new RecognizeReceiptsOptions()
.setLocale(FormRecognizerLocale.EN_US)
.setPollInterval(Duration.ofSeconds(5))
.setFieldElementsIncluded(true), Context.NONE)
.getFinalResult()
.forEach(recognizedReceipt -> {
Map<String, FormField> recognizedFields = recognizedReceipt.getFields();
FormField merchantNameField = recognizedFields.get("MerchantName");
if (merchantNameField != null) {
if (FieldValueType.STRING == merchantNameField.getValue().getValueType()) {
String merchantName = merchantNameField.getValue().asString();
System.out.printf("Merchant Name: %s, confidence: %.2f%n",
merchantName, merchantNameField.getConfidence());
}
}
FormField merchantPhoneNumberField = recognizedFields.get("MerchantPhoneNumber");
if (merchantPhoneNumberField != null) {
if (FieldValueType.PHONE_NUMBER == merchantPhoneNumberField.getValue().getValueType()) {
String merchantAddress = merchantPhoneNumberField.getValue().asPhoneNumber();
System.out.printf("Merchant Phone number: %s, confidence: %.2f%n",
merchantAddress, merchantPhoneNumberField.getConfidence());
}
}
FormField transactionDateField = recognizedFields.get("TransactionDate");
if (transactionDateField != null) {
if (FieldValueType.DATE == transactionDateField.getValue().getValueType()) {
LocalDate transactionDate = transactionDateField.getValue().asDate();
System.out.printf("Transaction Date: %s, confidence: %.2f%n",
transactionDate, transactionDateField.getConfidence());
}
}
FormField receiptItemsField = recognizedFields.get("Items");
if (receiptItemsField != null) {
System.out.printf("Receipt Items: %n");
if (FieldValueType.LIST == receiptItemsField.getValue().getValueType()) {
List<FormField> receiptItems = receiptItemsField.getValue().asList();
receiptItems.stream()
.filter(receiptItem -> FieldValueType.MAP == receiptItem.getValue().getValueType())
.map(formField -> formField.getValue().asMap())
.forEach(formFieldMap -> formFieldMap.forEach((key, formField) -> {
if ("Quantity".equals(key)) {
if (FieldValueType.FLOAT == formField.getValue().getValueType()) {
Float quantity = formField.getValue().asFloat();
System.out.printf("Quantity: %f, confidence: %.2f%n",
quantity, formField.getConfidence());
}
}
}));
}
}
});
Parameters:
Returns:
S’applique à
Azure SDK for Java