Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переведите текст.
Запросить URL-адрес
Отправьте запрос POST на следующий адрес.
POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}
Пример запроса
curl -x POST "https:localhost:5000/translate?api-version=3.0&from=en&to=es" -H "Content-Type: application/json" -d "[{
'Text': 'I would really like to drive your car.'}]"
Пример ответа
[
{
"translations": [
{
"text": "Realmente me gustaría conducir su coche.",
"to": "es"
}
]
}
]
Параметры запроса
В таблице ниже приведены параметры, которые передаются в строке запроса.
Обязательные параметры
| Параметр запроса | Описание | Условие |
|---|---|---|
| версия API | Версия API, запрошенная клиентом. Необходимое значение: 3.0. |
Обязательный параметр |
| от | Определяет язык оригинального текста. | Обязательный параметр |
| до | Определяет язык выходного текста. Например, используйте параметр to=de, чтобы перевести на немецкий.Вы можете одновременно переводить на различные языки, использовав этот параметр в строке запроса несколько раз. Например, используйте параметр to=de&to=it, чтобы перевести на немецкий и итальянский. |
Обязательный параметр |
- Вы можете запросить службу для
translationподдерживаемых языков области. - См. такжеязыковую поддержку транслитерации.
Необязательные параметры
| Параметр запроса | Описание |
|---|---|
| textType |
Необязательный параметр. Определяет, является ли текст перевода обычным или HTML-текстом. Любой код HTML должен быть полным элементом с правильным форматом. Допустимые значения: plain (по умолчанию) или html. |
| includeSentenceLength |
Необязательный параметр. Указывает, следует ли включать границы предложения оригинального и переведенного текста. Допустимые значения: true или false (по умолчанию). |
Заголовки запросов
| Заголовки | Описание | Условие |
|---|---|---|
| Заголовки проверки подлинности | См. доступные параметры проверки подлинности. | Обязательный заголовок запроса |
| Тип контента | Указывает тип содержимого для полезных данных. Допустимое значение: application/json; charset=UTF-8. |
Обязательный заголовок запроса |
| content-length: 0 | Длина текста запроса. | Необязательно |
| X-ClientTraceId | Созданный клиентом идентификатор GUID, позволяющий уникально идентифицировать запрос. Этот необязательный заголовок можно опустить, если в строку запроса включен идентификатор трассировки с помощью параметра запроса с именем ClientTraceId. |
Необязательно |
Текст запроса
Текст запроса является массивом в формате JSON. Каждый элемент этого массива представляет собой объект JSON со строковым свойством Text, который являет собой строку для перевода.
[
{"text":"I would really like to drive your car around the block a few times."}
]
Действительны следующие ограничения.
- Массив может содержать не более 100 элементов.
- Весь текст, включенный в запрос, не может превышать 50 000 символов, включая пробелы.
Текст ответа
Успешный ответ возвращается в формате массива JSON с одним результатом для каждой строки входного массива. Объект результата содержит следующие свойства.
translations— массив результатов перевода. Размер массива совпадает с количеством языков, указанных с помощью параметра запросаto. Каждый элемент массива содержит:to— строка, которая содержит код целевого языка.text— строка с текстом перевода.sentLen— объект, возвращающий границы предложения в оригинальном и переведенном текстах.srcSentLen— массив целых чисел, представляющих значения длины предложений в оригинальном тексте. Длина массива соответствует количеству предложений, а значения — длине каждого предложения.transSentLen: массив целых чисел, представляющих значения длины предложений в переведенном тексте. Длина массива соответствует количеству предложений, а значения — длине каждого предложения.Границы предложения включены только тогда, когда параметр запроса
includeSentenceLengthимеет значениеtrue.-
sourceText— объект с одним свойством строкиtext, который возвращает оригинальный текст в сценарии по умолчанию исходного языка.sourceTextсвойство присутствует только в том случае, если входные данные выражаются в сценарии, который не является обычным для этого языка. Например, если входные данные были на арабском языке, но написаны латинским алфавитом, тогда параметрsourceText.textвернет текст на арабском языке, преобразованным в арабский сценарий.
-
Заголовки ответа
| Заголовки | Описание |
|---|---|
| X-RequestId | Значение, созданное службой для идентификации запроса и используемого для устранения неполадок. |
| X-MT-System | Указывает тип системы, который использовался для перевода каждого целевого языка, запрошенного для перевода. Это значение представляет собой список строк, разделенных запятыми. Каждая строка обозначает тип: ▪ Пользовательский запрос включает пользовательскую систему, и при переводе использовалась как минимум одна пользовательская система. ▪ Команда — все остальные запросы |
Коды состояния ответа
Если возникает ошибка, запрос возвращает ответ на ошибку JSON. Код ошибки представляет собой число из 6 знаков, первые 3 из которых являются кодом состояния HTTP, а оставшиеся 3 цифры определяют категорию ошибки. Распространенные коды ошибок можно найти на странице состояния переводчика и кода ошибки.
Примеры кода: перевод текста
Примечание.
- Каждый пример выполняется в
localhostуказанном сdocker runпомощью команды. - Пока контейнер запущен,
localhostуказывает на сам контейнер. - Вам не нужно использовать
localhost:5000. Вы можете использовать любой порт, который еще не используется в среде узла.
Перевод отдельного элемента
В этом примере показано, как перевести одно предложение с английского языка на упрощенный китайский.
curl -X POST "http://localhost:{port}/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
}
]
Массив translations содержит один элемент, который обеспечивает перевод одного элемента текста в оригинальных данных.
Запрос конечной точки Azure Translator (текст)
Ниже приведен пример HTTP-запроса cURL с помощью localhost:5000, указанного docker run с помощью команды:
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-HANS"
-H "Content-Type: application/json" -d "[{'Text':'Hello, what is your name?'}]"
Примечание.
Если вы попытаетесь выполнить запрос post cURL, прежде чем контейнер будет готов, вы получите временно недоступный ответ службы . Подождите, пока контейнер будет готов, затем попробуйте еще раз.
Перевод текста с помощью API Swagger
Английский ↔ Немецкий
- Перейдите на страницу Swagger:
http://localhost:5000/swagger/index.html - Выберите POST/перевести
- Выберите Попробовать
- Введите параметр От как
en - Введите параметр Кому как
de - Введите параметр api-version как
3.0 - В разделе тексты замените
stringследующим JSON
[
{
"text": "hello, how are you"
}
]
Выберите Выполнить, полученные переводы будут выведены в Тексте ответа. Появится следующий ответ:
"translations": [
{
"text": "hallo, wie geht es dir",
"to": "de"
}
]
Перевести текст с помощью Python
Английский французский ↔
import requests, json
url = 'http://localhost:5000/translate?api-version=3.0&from=en&to=fr'
headers = { 'Content-Type': 'application/json' }
body = [{ 'text': 'Hello, how are you' }]
request = requests.post(url, headers=headers, json=body)
response = request.json()
print(json.dumps(
response,
sort_keys=True,
indent=4,
ensure_ascii=False,
separators=(',', ': ')))
Перевести текст с помощью консольного приложения C#/.NET
Английский испанский ↔
Запустите Visual Studio и создайте новое консольное приложение. Отредактируйте файл *.csproj, чтобы добавить узел <LangVersion>7.1</LangVersion> — указывает C# 7.1.
Добавьте пакет NuGet Newtoonsoft.Json версии 11.0.2.
В Program.cs измените весь существующий код на следующий скрипт:
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace TranslateContainer
{
class Program
{
const string ApiHostEndpoint = "http://localhost:5000";
const string TranslateApi = "/translate?api-version=3.0&from=en&to=es";
static async Task Main(string[] args)
{
var textToTranslate = "Sunny day in Seattle";
var result = await TranslateTextAsync(textToTranslate);
Console.WriteLine(result);
Console.ReadLine();
}
static async Task<string> TranslateTextAsync(string textToTranslate)
{
var body = new object[] { new { Text = textToTranslate } };
var requestBody = JsonConvert.SerializeObject(body);
var client = new HttpClient();
using (var request =
new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri($"{ApiHostEndpoint}{TranslateApi}"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
})
{
// Send the request and await a response.
var response = await client.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
}
}
}
Перевод нескольких строк
Одновременный перевод нескольких строк — это просто вопрос задания массива строк в тексте запроса.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}, {'Text':'I am fine, thank you.'}]"
Ответ содержит перевод всех фрагментов текста в том же порядке, что и в запросе. Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
},
{
"translations":[
{"text":"我很好,谢谢你。","to":"zh-Hans"}
]
}
]
Перевод на несколько языков
В этом примере показано, как перевести одинаковый оригинальный текст на несколько языков в одном запросе.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
Текст ответа:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"},
{"text":"Hallo, was ist dein Name?","to":"de"}
]
}
]
Перевод содержимого с помощью разметки и указание преобразованного содержимого
Обычно переводят содержимое, которое включает разметку, например содержимое HTML-страницы или содержимое XML-документа. Включите параметр запроса textType=html при переводе содержимого с тегами. Кроме того, иногда бывает полезно исключить из перевода конкретное содержимое. С помощью атрибута class=notranslate можно указать содержимое, которое должно остаться не переведенным. В следующем примере содержимое внутри первого div элемента не преобразуется, а содержимое второго div элемента преобразуется.
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
Пример запроса приведен ниже.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&textType=html" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'<div class=\"notranslate\">This will not be translated.</div><div>This will be translated.</div>'}]"
Ответ:
[
{
"translations":[
{"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
]
}
]
Перевод с помощью динамического словаря
Если вы уже знаете перевод, который хотите применить к слову или фразе, вы можете указать его в запросе как исправление. Динамический словарь безопасен только для имен собственных, таких как личные имена и названия продуктов.
В разметке используется следующий синтаксис:
<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>
Например, рассмотрим следующее русское предложение: "Слово "словоматик" — это словарная запись". Чтобы сохранить при переводе слово словоматик, необходимо отправить запрос:
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The word <mstrans:dictionary translation=\"wordomatic\">word or phrase</mstrans:dictionary> is a dictionary entry.'}]"
Результат:
[
{
"translations":[
{"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
]
}
]
Эта возможность работает одинаково как с textType=text, так и с textType=html. Компонент должен использоваться только в случае необходимости. Соответствующий и гораздо лучший способ настройки перевода — это использование концентратора Custom Translator. Custom Translator обеспечивает полное использование контекста и статистические значения вероятности. Если вы создали обучающие данные, показывающие работу или фразу в контексте, вы получите лучшие результаты.
Узнайте больше о Custom Translator.
Ограничения запросов
Каждый запрос на перевод ограничен 50 000 символами для всех целевых языков, на которые вы выполняете перевод. Например, при отправке запроса на перевод 3000 символов на три разных языка его размер составит 3000x3 = 9000 символов, что соответствует ограничению запроса. Плата взимается на основе количества знаков, а не запросов. Мы рекомендуем отправлять более короткие запросы.
В нижеприведенной таблице перечислены элементы массива и ограничения на количество символов для операции перевод Переводчика.
| Операция | Максимальный размер элемента массива | Максимальное количество элементов массива | Максимальный размер запроса (символов) |
|---|---|---|---|
| Перевести | 10 000 | 100 | 50,000 |
Использование команды docker Compose для поддержки контейнеров
Docker Compose — это средство, позволяющее настроить многоконтейнерные приложения с помощью одного файла YAML, который обычно называется compose.yaml.
docker compose up Используйте команду, чтобы запустить приложение контейнера и docker compose down команду, чтобы остановить и удалить контейнеры.
Если вы установили Интерфейс командной строки Docker Desktop, он включает в себя docker compose и его предварительные требования. Если у вас нет Docker Desktop, ознакомьтесь с обзором установки Docker Compose.
В следующей таблице перечислены необходимые вспомогательные контейнеры для операций перевода текста и документов. Контейнер Переводчика отправляет сведения о выставлении счетов в Azure через ресурс Azure Translator в учетной записи Azure.
| Операция | Запрос запроса | Тип документа | Поддержка контейнеров |
|---|---|---|---|
| •Перевод текста • Перевод документов |
from указанный. |
Документы Office | нет |
| •Перевод текста • Перевод документов |
from не задано. Требует автоматического обнаружения языка для определения исходного языка. |
Документы Office | Контейнер "Анализ текста:язык" ✔️ |
| •Перевод текста • Перевод документов |
from указанный. |
Сканированные PDF-документы | ✔️ Контейнер Vision:read |
| •Перевод текста • Перевод документов |
from не указан, требующий автоматического обнаружения языка для определения исходного языка. |
Сканированные PDF-документы | Контейнер "Анализ текста:язык" ✔️ ✔️ Контейнер Vision:read |
Образы и теги контейнеров
Образы контейнеров средств Foundry можно найти в каталоге реестра Артефактов Майкрософт . В следующей таблице перечислены полные расположения изображений для перевода текста и документа:
| Контейнер | Расположение образа | Примечания. |
|---|---|---|
| Переводчик: перевод текста | mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest |
Полный список тегов версий перевода текста средств Foundry можно просмотреть в MCR. |
| Переводчик: перевод документов | Activities overview (Обзор действий) | Activities overview (Обзор действий) |
| Анализ текста: язык | mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest |
Вы можете просмотреть полный список тегов версий языка Средства Foundry Text Analytics в MCR. |
| Зрение: чтение | mcr.microsoft.com/azure-cognitive-services/vision/read:latest |
Вы можете просмотреть полный список тегов версий Средства обнаружения компьютерного зрения OCR в MCR. |
Создание приложения
Используя предпочитаемый редактор или интегрированную среду разработки, создайте новый каталог для вашего приложения с именем
container-environmentили именем вашего выбора.Создайте файл YAML с именем
compose.yaml. Расширения .yml или YAML можно использовать дляcomposeфайла.Скопируйте и вставьте следующий пример кода YAML в
compose.yamlфайл.{TRANSLATOR_KEY}Замените{TRANSLATOR_ENDPOINT_URI}значения ключей и конечных точек из экземпляра портал Azure Translator. Убедитесь, что используется .document translation endpointИмя верхнего уровня (
azure-ai-translator,azure-ai-language,azure-ai-read) — это указанный параметр.Это
container_nameнеобязательный параметр, который задает имя контейнера при запуске, а не позволяетdocker composeсоздавать имя.services: azure-ai-translator: container_name: azure-ai-translator image: mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest environment: - EULA=accept - billing={TRANSLATOR_ENDPOINT_URI} - apiKey={TRANSLATOR_KEY} - ladurl=http://azure-ai-language:5000 - VISIONURL=http://azure-ai-read:5000 - LANGUAGES=en,es ports: - "5000:5000" volumes: - {your local folder}:/usr/local/models azure-ai-language: container_name: azure-ai-language image: mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest environment: - EULA=accept - billing={LANGUAGE_RESOURCE_ENDPOINT_URI} - apiKey={LANGUAGE_RESOURCE_KEY} - Languages=en,es - LADINCLUSTER=true azure-ai-read: container_name: azure-ai-read image: mcr.microsoft.com/azure-cognitive-services/vision/read:latest environment: - EULA=accept - billing={COMPUTER_VISION_ENDPOINT_URI} - apiKey={COMPUTER_VISION_KEY}Откройте терминал, перейдите в
container-environmentпапку и запустите контейнеры с помощью следующейdocker-composeкоманды:docker compose upЧтобы остановить контейнеры, используйте следующую команду.
docker compose downСовет
docker composeКоманды:-
docker compose pauseприостанавливает выполнение контейнеров. -
docker compose unpause {your-container-name}нераспакованные контейнеры приостановлены. -
docker compose restartперезапускает все остановленные и запущенные контейнеры со всеми предыдущими изменениями без изменений. При внесении изменений вcompose.yamlконфигурацию эти изменения не обновляются с помощьюdocker compose restartкоманды. Для отражения обновлений и изменений вdocker compose upфайле необходимо использоватьcompose.yamlкоманду. -
docker compose ps -aперечисляет все контейнеры, включая остановленные. -
docker compose execпозволяет выполнять команды для отсоединения или задания переменных среды в работающем контейнере.
Дополнительные сведения см. в справочнике по интерфейсу командной строки Docker.
-