com.azure.ai.formrecognizer
O Azure Reconhecimento de Formulários é um serviço baseado em nuvem fornecido pelo Microsoft Azure que utiliza o aprendizado de máquina para extrair informações de vários tipos de formulários. Ele foi projetado para automatizar o processo de reconhecimento de formulários, extração de dados e compreensão de formulários. O Azure Reconhecimento de Formulários pode lidar com formulários estruturados, como faturas, recibos e pesquisas, bem como dados de formulário não estruturados, como contratos, contratos e relatórios financeiros.
O serviço usa tecnologia avançada de OCR (reconhecimento óptico de caracteres) para extrair pares de texto e chave-valor de formulários personalizados, permitindo que as organizações automatizem tarefas de entrada de dados que, de outra forma, exigiriam esforço manual. Ele pode reconhecer e extrair informações como datas, endereços, números de fatura, itens de linha e outros pontos de dados relevantes de formulários.
A biblioteca de clientes do Azure Reconhecimento de Formulários permite que os desenvolvedores java interajam com o serviço de Reconhecimento de Formulários do Azure. Ele fornece um conjunto de classes e métodos que abstraem a API RESTful subjacente do Azure Reconhecimento de Formulários, facilitando a integração do serviço a aplicativos Java.
A biblioteca de clientes do Azure Reconhecimento de Formulários fornece os seguintes recursos:
- Reconhecimento de formulário: permite enviar formulários para extrair informações como texto, pares chave-valor, tabelas e campos de formulário. Você pode analisar documentos estruturados e não estruturados.
- Gerenciamento de Modelos: permite treinar modelos personalizados fornecendo dados de treinamento rotulados. Você também pode listar e excluir modelos existentes.
- Reconhecer Resultados: fornece métodos para recuperar e interpretar os resultados da análise, incluindo valores de texto e campo extraídos, pontuações de confiança e informações de layout de formulário.
- Sondagem e retornos de chamada: inclui mecanismos para sondar o serviço para marcar o status de uma operação de análise ou registrar retornos de chamada para receber notificações quando a análise for concluída.
Introdução
A biblioteca de Reconhecimento de Formulários do Azure fornece clientes de análise como FormRecognizerAsyncClient e FormRecognizerClient para se conectar ao serviço cognitivo do Reconhecimento de Formulários Azure para analisar informações de formulários e extraí-los em dados estruturados. Ele também fornece clientes de treinamento como FormTrainingClient e FormTrainingAsyncClient para criar e gerenciar modelos de formulários personalizados.
Nota:Esse cliente só dá com.azure.ai.formrecognizer.FormRecognizerServiceVersion#V2_1 suporte a e inferior. É recomendável usar uma versão DocumentAnalysisClient de serviço mais recente e DocumentModelAdministrationClient.
Consulte o Guia de migração para usar as versões de API 2022-08-31 e posteriores.
Os clientes de serviço são o ponto de interação para que os desenvolvedores usem o Azure Reconhecimento de Formulários. FormRecognizerClient é o cliente de serviço síncrono e FormRecognizerAsyncClient é o cliente de serviço assíncrono. Os exemplos mostrados neste documento usam um objeto de credencial chamado DefaultAzureCredential para autenticação, que é apropriado para a maioria dos cenários, incluindo ambientes locais de desenvolvimento e produção. Além disso, é recomendável usar a identidade gerenciada para autenticação em ambientes de produção. Você pode encontrar mais informações sobre diferentes maneiras de autenticação e seus tipos de credenciais correspondentes na documentação da Identidade do Azure".
Exemplo: Construir um FormRecognizerClient com DefaultAzureCredential
O exemplo de código a seguir demonstra a criação de um FormRecognizerClient, usando o 'DefaultAzureCredentialBuilder' para configurá-lo.
FormRecognizerClient formRecognizerClient = new FormRecognizerClientBuilder()
.endpoint("{endpoint}")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Além disso, consulte o exemplo de código a ser usado AzureKeyCredential para a criação do cliente.
FormRecognizerClient formRecognizerClient = new FormRecognizerClientBuilder()
.credential(new AzureKeyCredential("{key}"))
.endpoint("{endpoint}")
.buildClient();
Vamos dar uma olhada nos cenários do cliente de análise e seu respectivo uso abaixo.
Analisando formulários com modelos predefinidos
Reconhecimento de Formulários modelos e sua saída associada para ajudá-lo a escolher o melhor modelo para atender às suas necessidades de cenário de documento.
Você pode usar modelos específicos de domínio ou treinar um modelo personalizado adaptado às suas necessidades comerciais específicas e casos de uso.
Exemplo: reconhecer dados de recibos usando uma fonte de URL
O exemplo de código a seguir demonstra como detectar e extrair dados de recibos usando o OCR (reconhecimento óptico de caracteres).
String receiptUrl = "https://raw.githubusercontent.com/Azure/azure-sdk-for-java/main/sdk/formrecognizer"
+ "/azure-ai-formrecognizer/src/samples/resources/sample-forms/receipts/contoso-allinone.jpg";
SyncPoller<FormRecognizerOperationResult, List<RecognizedForm>> syncPoller =
formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl);
List<RecognizedForm> receiptPageResults = syncPoller.getFinalResult();
for (int i = 0; i < receiptPageResults.size(); i++) {
RecognizedForm recognizedForm = receiptPageResults.get(i);
Map<String, FormField> recognizedFields = recognizedForm.getFields();
System.out.printf("----------- Recognizing receipt info for page %d -----------%n", i);
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());
}
}
}));
}
}
}
Você também pode extrair dados de um recibo local com modelos predefinidos usando o beginRecognizeReceipts método .
Para obter mais informações sobre qual modelo com suporte você deve usar, consulte a documentação de uso de modelos.
Analise um formulário personalizado com um modelo treinado com ou sem rótulos.
Analise um formulário personalizado com um modelo treinado com ou sem rótulos. Modelos personalizados são treinados com seus próprios dados, portanto, eles são adaptados aos seus documentos.
Para obter mais informações, consulte treinar um modelo com rótulos.
Exemplo: analisar um formulário personalizado com um modelo treinado com rótulos
Este exemplo demonstra como reconhecer campos de formulário e outros conteúdos de seus formulários personalizados, usando modelos treinados com seus próprios tipos de formulário.
String trainingFilesUrl = "{SAS_URL_of_your_container_in_blob_storage}";
boolean useTrainingLabels = true;
SyncPoller<FormRecognizerOperationResult, CustomFormModel> trainingPoller =
formTrainingClient.beginTraining(trainingFilesUrl,
useTrainingLabels,
new TrainingOptions()
.setModelName("my model trained with labels"),
Context.NONE);
CustomFormModel customFormModel = trainingPoller.getFinalResult();
// Model Info
System.out.printf("Model Id: %s%n", customFormModel.getModelId());
String customFormUrl = "customFormUrl";
String modelId = customFormModel.getModelId();
SyncPoller<FormRecognizerOperationResult, List<RecognizedForm>> recognizeFormPoller =
formRecognizerClient.beginRecognizeCustomFormsFromUrl(modelId, customFormUrl);
List<RecognizedForm> recognizedForms = recognizeFormPoller.getFinalResult();
for (int i = 0; i < recognizedForms.size(); i++) {
RecognizedForm form = recognizedForms.get(i);
System.out.printf("----------- Recognized custom form info for page %d -----------%n", i);
System.out.printf("Form type: %s%n", form.getFormType());
System.out.printf("Form type confidence: %.2f%n", form.getFormTypeConfidence());
form.getFields().forEach((label, formField) ->
System.out.printf("Field %s has value %s with confidence score of %f.%n", label,
formField.getValueData().getText(),
formField.getConfidence())
);
}
Para obter uma abordagem sugerida para extrair informações de formulários personalizados com campos conhecidos, consulte digitando fortemente um formulário reconhecido.
Classes
| FormRecognizerAsyncClient |
Essa classe fornece um cliente assíncrono para se conectar ao Reconhecimento de Formulários Serviço Cognitivo do Azure. |
| FormRecognizerClient |
Essa classe fornece um cliente síncrono para se conectar ao Reconhecimento de Formulários Serviço Cognitivo do Azure. |
| FormRecognizerClientBuilder |
Essa classe fornece uma API de construtor fluente para ajudar na instanciação de FormRecognizerClient e FormRecognizerAsyncClient, chamar buildClient() build |
Enumerações
| FormRecognizerServiceVersion |
As versões do Azure Reconhecimento de Formulários compatíveis com essa biblioteca de clientes. |