Распознавание строки текста
Если вы не хотите передавать в Vision OCR изображение целиком, вы можете вырезать строку и отправить на распознавание только ее.
Перед началом работы
Чтобы воспользоваться примерами, установите cURL
Получите данные вашего аккаунта для аутентификации:
-
Получите IAM-токен для аккаунта на Яндексе или федеративного аккаунта.
-
Получите идентификатор каталога, на который у вашего аккаунта есть роль
ai.vision.user
или выше. -
При обращении к Vision OCR через API в каждом запросе передавайте полученные параметры:
-
Для Vision API и Classifier API:
Указывайте IAM-токен в заголовке
Authorization
в следующем формате:Authorization: Bearer <IAM-токен>
Идентификатор каталога указывайте в теле запроса в параметре
folderId
. -
Для OCR API:
- в заголовке
Authorization
указывайте IAM-токен; - в заголовке
x-folder-id
указывайте идентификатор каталога.
Authorization: Bearer <IAM-токен> x-folder-id <идентификатор_каталога>
- в заголовке
-
Vision OCR поддерживает два способа аутентификации с сервисным аккаунтом:
-
С помощью IAM-токена:
-
Полученный IAM-токен передавайте в заголовке
Authorization
в следующем формате:Authorization: Bearer <IAM-токен>
-
С помощью API-ключей.
Используйте API-ключи, если у вас нет возможности автоматически запрашивать IAM-токен.
-
Полученный API-ключ передавайте в заголовке
Authorization
в следующем формате:Authorization: Api-Key <API-ключ>
Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
Распознать строку текста с помощью OCR API
OCR API позволяет распознать отдельную строку с помощью метода recognize.
Чтобы распознать единственную строку текста на изображении, воспользуйтесь инструкцией Распознавание текста на изображении.
Распознать строку текста с помощью Vision API
Важно
Описанные ниже возможности сервиса Vision OCR устарели и перестали поддерживаться 14 мая 2024 года.
Vision API позволяет распознать отдельную строку с помощью метода recognize.
В конфигурации укажите модель line
, которая лучше подходит для распознавания отдельных строк.
Внимание
На изображении должна быть только одна строка текста, а высота текста должна быть не меньше 80% от высоты изображения, иначе результаты распознавания с моделью line
будут непредсказуемы. Пример правильного изображения:
Чтобы распознать строку текста:
-
Кодируйте файл изображения в формат Base64.
UNIXWindowsPowerShellPythonNode.jsJavaGobase64 -i input.jpg > output.txt
C:> Base64.exe -e input.jpg > output.txt
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt
# Импортируйте библиотеку для кодирования в Base64 import base64 # Создайте функцию, которая кодирует файл и возвращает результат. def encode_file(file_path): with open(file_path, "rb") as fid: file_content = fid.read() return base64.b64encode(file_content).decode("utf-8")
// Считайте содержимое файла в память. var fs = require('fs'); var file = fs.readFileSync('/path/to/file'); // Получите содержимое файла в формате Base64. var encoded = Buffer.from(file).toString('base64');
// Импортируйте библиотеку для кодирования в Base64. import org.apache.commons.codec.binary.Base64; // Получите содержимое файла в формате Base64. byte[] fileData = Base64.encodeBase64(yourFile.getBytes());
import ( "bufio" "encoding/base64" "io/ioutil" "os" ) // Откройте файл f, _ := os.Open("/path/to/file") // Прочитайте содержимое файла. reader := bufio.NewReader(f) content, _ := ioutil.ReadAll(reader) // Получите содержимое файла в формате Base64. base64.StdEncoding.EncodeToString(content)
-
Создайте файл с телом запроса, например
body.json
:body.json:
{ "folderId": "b1gvmob95yys********", "analyze_specs": [{ "content": "iVBORw0KGgo...", "features": [{ "type": "TEXT_DETECTION", "text_detection_config": { "language_codes": ["*"], "model": "line" } }] }] }
Где:
folderId
– идентификатор любого каталога, на который у вашего аккаунта есть рольai.vision.user
или выше.content
– содержимое файла, полученное при переводе изображения в формат Base64.model
– модельline
.
-
Отправьте запрос с помощью метода batchAnalyze и сохраните ответ в файл, например
output.json
:BashCMDPowerShellexport IAM_TOKEN=<IAM-токен> curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
set IAM_TOKEN=<IAM-токен> curl ^ --request POST ^ --header "Content-Type: application/json" ^ --header "Authorization: Bearer %IAM_TOKEN%" ^ --data "@body.json" ^ https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
$Env:IAM_TOKEN="<IAM-токен>" curl ` --request POST ` --header "Content-Type: application/json" ` --header "Authorization: Bearer $Env:IAM_TOKEN" ` --data '@body.json' ` https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json