A API Vision pode detetar e transcrever texto de ficheiros PDF e TIFF armazenados no Cloud Storage.
A deteção de texto de documentos PDF e TIFF tem de ser pedida através da função files:asyncBatchAnnotate, que executa um pedido offline (assíncrono) e fornece o respetivo estado através dos recursos operations.
A saída de um pedido PDF/TIFF é escrita num ficheiro JSON criado no contentor do Cloud Storage especificado.
Limitações
A API Vision aceita ficheiros PDF/TIFF com até 2000 páginas. Os ficheiros maiores vão devolver um erro.
Autenticação
As chaves API não são suportadas para pedidos files:asyncBatchAnnotate. Consulte o artigo
Usar uma conta de serviço para ver
instruções sobre a autenticação com uma conta de serviço.
A conta usada para a autenticação tem de ter acesso ao contentor do Cloud Storage que especificar para a saída (roles/editor ou roles/storage.objectCreator ou superior).
Pode usar uma chave da API para consultar o estado da operação. Consulte as instruções em Usar uma chave da API.
Pedidos de deteção de texto em documentos
Atualmente, a deteção de documentos PDF/TIFF só está disponível para ficheiros armazenados em contentores do Cloud Storage. Os ficheiros JSON de resposta são guardados de forma semelhante num contentor do Cloud Storage.
gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf,
Fonte:
United States
Census Bureau.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- CLOUD_STORAGE_BUCKET: um contentor/diretório do Cloud Storage
para guardar os ficheiros de saída, expresso no seguinte formato:
gs://bucket/directory/
- CLOUD_STORAGE_FILE_URI: o caminho para um ficheiro (PDF/TIFF) válido num contentor do Cloud Storage. Tem de ter, pelo menos, privilégios de leitura para
o ficheiro.
Exemplo:
gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf
- FEATURE_TYPE: um tipo de funcionalidade válido.
Para pedidos
files:asyncBatchAnnotate, pode usar os seguintes tipos de funcionalidades:DOCUMENT_TEXT_DETECTIONTEXT_DETECTION
- PROJECT_ID: o ID do seu Google Cloud projeto.
Considerações específicas do campo:
inputConfig: substitui o campoimageusado noutros pedidos da API Vision. Contém dois campos secundários:gcsSource.uri: o URI do Google Cloud Storage do ficheiro PDF ou TIFF (acessível ao utilizador ou à conta de serviço que está a fazer o pedido).mimeType– um dos tipos de ficheiros aceites:application/pdfouimage/tiff.
outputConfig: especifica os detalhes da saída. Contém dois campos secundários:gcsDestination.uri– um URI do Google Cloud Storage válido. O contentor tem de ser gravável pelo utilizador ou pela conta de serviço que está a fazer o pedido. O nome do ficheiro éoutput-x-to-y, em quexeyrepresentam os números de páginas PDF/TIFF incluídos nesse ficheiro de saída. Se o ficheiro existir, o respetivo conteúdo é substituído.batchSize- especifica quantas páginas de saída devem ser incluídas em cada ficheiro JSON de saída.
Método HTTP e URL:
POST https://vision.googleapis.com/v1/files:asyncBatchAnnotate
Corpo JSON do pedido:
{
"requests":[
{
"inputConfig": {
"gcsSource": {
"uri": "CLOUD_STORAGE_FILE_URI"
},
"mimeType": "application/pdf"
},
"features": [
{
"type": "FEATURE_TYPE"
}
],
"outputConfig": {
"gcsDestination": {
"uri": "CLOUD_STORAGE_BUCKET"
},
"batchSize": 1
}
}
]
}
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json,
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/files:asyncBatchAnnotate"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json,
e execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/files:asyncBatchAnnotate" | Select-Object -Expand Content
Um pedido asyncBatchAnnotate bem-sucedido devolve uma resposta com um único campo de nome:
{ "name": "projects/usable-auth-library/operations/1efec2285bd442df" }
Este nome representa uma operação de longa duração com um ID associado (por exemplo, 1efec2285bd442df), que pode ser consultado através da API v1.operations.
Para obter a resposta de anotação do Vision, envie um pedido GET para o ponto final v1.operations, transmitindo o ID da operação no URL:
GET https://vision.googleapis.com/v1/operations/operation-idPor exemplo:
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/project-id/locations/location-id/operations/1efec2285bd442df
Se a operação estiver em curso:
{ "name": "operations/1efec2285bd442df", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata", "state": "RUNNING", "createTime": "2019-05-15T21:10:08.401917049Z", "updateTime": "2019-05-15T21:10:33.700763554Z" } }
Quando a operação estiver concluída, o state é apresentado como DONE e os seus resultados são escritos no ficheiro do Google Cloud Storage especificado:
{ "name": "operations/1efec2285bd442df", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata", "state": "DONE", "createTime": "2019-05-15T20:56:30.622473785Z", "updateTime": "2019-05-15T20:56:41.666379749Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.vision.v1.AsyncBatchAnnotateFilesResponse", "responses": [ { "outputConfig": { "gcsDestination": { "uri": "gs://your-bucket-name/folder/" }, "batchSize": 1 } } ] } }
O JSON no seu ficheiro de saída é semelhante ao de um [pedido de deteção de texto de documentos](/vision/docs/ocr) de uma imagem, com a adição de um campo context que mostra a localização do PDF ou TIFF especificado e o número de páginas no ficheiro:
output-1-to-1.json
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API GoVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.