Reconhecimento ótico de carateres (OCR)
A API Vision pode detetar e extrair texto de imagens. Existem duas funcionalidades de anotação que suportam o reconhecimento ótico de carateres (OCR):
TEXT_DETECTIONdeteta e extrai texto de qualquer imagem. Por exemplo, uma fotografia pode conter um sinal de rua ou um sinal de trânsito. O JSON inclui a string extraída completa, bem como palavras individuais e as respetivas caixas delimitadoras.
DOCUMENT_TEXT_DETECTIONtambém extrai texto de uma imagem, mas a resposta é otimizada para texto denso e documentos. O JSON inclui informações sobre páginas, blocos, parágrafos, palavras e quebras.
Saiba mais sobre a
DOCUMENT_TEXT_DETECTIONpara a extração de escrita manual e a extração de texto de ficheiros (PDF/TIFF).
Experimente
Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho do Cloud Vision em cenários reais. Os novos clientes também recebem 300 USD em créditos sem custo financeiro para executar, testar e implementar cargas de trabalho.
Experimente o Cloud Vision sem custo financeiroPedidos de deteção de texto
Configure o seu Google Cloud projeto e autenticação
Se não tiver criado um Google Cloud projeto, faça-o agora. Expanda esta secção para ver instruções.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init - BASE64_ENCODED_IMAGE: a representação base64 (string ASCII) dos dados da imagem binária. Esta string deve ser semelhante à
seguinte string:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- PROJECT_ID: o ID do seu Google Cloud projeto.
Detete texto numa imagem local
Pode usar a API Vision para realizar a deteção de caraterísticas num ficheiro de imagem local.
Para pedidos REST, envie o conteúdo do ficheiro de imagem como uma string codificada em base64 no corpo do pedido.
Para pedidos da gcloud e da biblioteca de cliente, especifique o caminho para uma imagem local no seu pedido.
gcloud
Para realizar a deteção de texto, use o comando
gcloud ml vision detect-text
conforme mostrado no exemplo seguinte:
gcloud ml vision detect-text ./path/to/local/file.jpg
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://vision.googleapis.com/v1/images:annotate
Corpo JSON do pedido:
{
"requests": [
{
"image": {
"content": "BASE64_ENCODED_IMAGE"
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}
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/images:annotate"
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/images:annotate" | Select-Object -Expand Content
Se o pedido for bem-sucedido, o servidor devolve um código de estado HTTP 200 OK e a resposta no formato JSON.
Uma resposta TEXT_DETECTION inclui a expressão detetada, a respetiva caixa delimitadora e as palavras individuais e as respetivas caixas delimitadoras.
Resposta
{
"responses": [
{
"textAnnotations": [
{
"locale": "en",
"description": "WAITING?\nPLEASE\nTURN OFF\nYOUR\nENGINE\n",
"boundingPoly": {
"vertices": [
{
"x": 341,
"y": 828
},
{
"x": 2249,
"y": 828
},
{
"x": 2249,
"y": 1993
},
{
"x": 341,
"y": 1993
}
]
}
},
{
"description": "WAITING?",
"boundingPoly": {
"vertices": [
{
"x": 352,
"y": 828
},
{
"x": 2248,
"y": 911
},
{
"x": 2238,
"y": 1148
},
{
"x": 342,
"y": 1065
}
]
}
},
{
"description": "PLEASE",
"boundingPoly": {
"vertices": [
{
"x": 1210,
"y": 1233
},
{
"x": 1907,
"y": 1263
},
{
"x": 1902,
"y": 1383
},
{
"x": 1205,
"y": 1353
}
]
}
},
{
"description": "TURN",
"boundingPoly": {
"vertices": [
{
"x": 1210,
"y": 1418
},
{
"x": 1730,
"y": 1441
},
{
"x": 1724,
"y": 1564
},
{
"x": 1205,
"y": 1541
}
]
}
},
{
"description": "OFF",
"boundingPoly": {
"vertices": [
{
"x": 1792,
"y": 1443
},
{
"x": 2128,
"y": 1458
},
{
"x": 2122,
"y": 1581
},
{
"x": 1787,
"y": 1566
}
]
}
},
{
"description": "YOUR",
"boundingPoly": {
"vertices": [
{
"x": 1219,
"y": 1603
},
{
"x": 1746,
"y": 1629
},
{
"x": 1740,
"y": 1759
},
{
"x": 1213,
"y": 1733
}
]
}
},
{
"description": "ENGINE",
"boundingPoly": {
"vertices": [
{
"x": 1222,
"y": 1771
},
{
"x": 1944,
"y": 1834
},
{
"x": 1930,
"y": 1992
},
{
"x": 1208,
"y": 1928
}
]
}
}
],
"fullTextAnnotation": {
"pages": [
...
]
},
"paragraphs": [
...
]
},
"words": [
...
},
"symbols": [
...
}
]
}
],
"blockType": "TEXT"
},
...
]
}
],
"text": "WAITING?\nPLEASE\nTURN OFF\nYOUR\nENGINE\n"
}
}
]
}
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.
// detectText gets text from the Vision API for an image at the given file path.
func detectText(w io.Writer, file string) error {
ctx := context.Background()
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return err
}
f, err := os.Open(file)
if err != nil {
return err
}
defer f.Close()
image, err := vision.NewImageFromReader(f)
if err != nil {
return err
}
annotations, err := client.DetectTexts(ctx, image, nil, 10)
if err != nil {
return err
}
if len(annotations) == 0 {
fmt.Fprintln(w, "No text found.")
} else {
fmt.Fprintln(w, "Text:")
for _, annotation := range annotations {
fmt.Fprintf(w, "%q\n", annotation.Description)
}
}
return nil
}
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no guia de início rápido da API Vision com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Vision Java.
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.EntityAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectText {
public static void detectText() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "path/to/your/image/file.jpg";
detectText(filePath);
}
// Detects text in the specified image.
public static void detectText(String filePath) throws IOException {