Kapsayıcı: Metni Çevir

Metni çevirin.

İstek URL’si

Şuraya bir POST isteği gönderin:

POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}

Örnek istek

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.'}]"

Örnek yanıt

[
  {
    "translations": [
      {
        "text": "Realmente me gustaría conducir su coche.",
        "to": "es"
      }
    ]
  }
]

İstek parametreleri

Sorgu dizesinde geçirilen istek parametreleri şunlardır:

Gerekli parametreler

Sorgu parametresi Açıklama Koşul
api-sürümü İstemci tarafından istenen API sürümü. Değer olmalıdır 3.0. Gerekli parametre
kimden Giriş metninin dilini belirtir. Gerekli parametre
kullanıcısı Çıkış metninin dilini belirtir. Örneğin, Almancaya çevirmek için kullanın to=de .
Sorgu dizesinde parametresi yinelenerek aynı anda birden çok dile çevrilebilir. Örneğin, Almanca ve İtalyanca'ya çevirmek için kullanın to=de&to=it .
Gerekli parametre

İsteğe bağlı parametreler

Sorgu parametresi Açıklama
textType İsteğe bağlı parametre.
Çevrilen metnin düz metin mi yoksa HTML metni mi olduğunu tanımlar. Tüm HTML'ler iyi biçimlendirilmiş, eksiksiz bir öğe olmalıdır. Olası değerler şunlardır: plain (varsayılan) veya html.
includeSentenceLength İsteğe bağlı parametre.
Giriş metni ve çevrilmiş metin için tümce sınırlarının eklenip eklenmeyeceğini belirtir. Olası değerler şunlardır: true veya false (varsayılan).

İstek üst bilgileri

Üst Bilgiler Açıklama Koşul
Kimlik doğrulama üst bilgileri Kimlik doğrulaması için kullanılabilir seçeneklere bakın. Gerekli istek üst bilgisi
İçerik Türü Yükün içerik türünü belirtir.
Kabul edilen değer: application/json; charset=UTF-8.
Gerekli istek üst bilgisi
İçerik Uzunluğu İstek gövdesinin uzunluğu. Optional
X-ClientTraceId İsteği benzersiz olarak tanımlamak için istemci tarafından oluşturulan GUID. adlı ClientTraceIdbir sorgu parametresi kullanarak izleme kimliğini sorgu dizesine eklerseniz bu üst bilgiyi atlayabilirsiniz. Optional

Request body

İsteğin gövdesi bir JSON dizisidir. Her dizi öğesi, çevrilecek dizeyi temsil eden adlı Textdize özelliğine sahip bir JSON nesnesidir.

[
    {"Text":"I would really like to drive your car around the block a few times."}
]

Aşağıdaki sınırlamalar geçerlidir:

  • Dizide en fazla 100 öğe olabilir.
  • İstekte yer alan metnin tamamı boşluklar da dahil olmak üzere 50.000 karakteri aşamaz.

Yanıt gövdesi

Başarılı bir yanıt, giriş dizisindeki her dize için bir sonuç içeren bir JSON dizisidir. Sonuç nesnesi aşağıdaki özellikleri içerir:

  • translations: Çeviri sonuçları dizisi. Dizinin boyutu, sorgu parametresi aracılığıyla belirtilen hedef dillerin sayısıyla to eşleşir. Dizideki her öğe şunları içerir:

  • to: Hedef dilin dil kodunu temsil eden bir dize.

  • text: Çevrilmiş metni veren bir dize.

  • sentLen: Giriş ve çıkış metinlerinde cümle sınırları döndüren bir nesne.

  • srcSentLen: Giriş metnindeki cümlelerin uzunluklarını temsil eden bir tamsayı dizisi. Dizinin uzunluğu tümce sayısıdır ve değerler her cümlenin uzunluğudur.

  • transSentLen: Çevrilen metindeki cümlelerin uzunluklarını temsil eden bir tamsayı dizisi. Dizinin uzunluğu tümce sayısıdır ve değerler her cümlenin uzunluğudur.

    Tümce sınırları yalnızca istek parametresi includeSentenceLength olduğunda trueeklenir.

    • sourceText: Adlı texttek dize özelliğine sahip olan ve giriş metnini kaynak dilin varsayılan betiğinde veren nesne. sourceText özelliği yalnızca giriş, dilin normal betiği olmayan bir betikte ifade edildiğinde bulunur. Örneğin, giriş Latin betiğinde Arapça yazılmışsa, sourceText.text Arap betiğine dönüştürülen Aynı Arapça metin olacaktır.

Yanıt üst bilgileri

Üst Bilgiler Açıklama
X-RequestId hizmet tarafından isteği tanımlamak için oluşturulan ve sorun giderme amacıyla kullanılan değer.
X-MT Sistemi Çeviri için istenen her 'to' dili için çeviri için kullanılan sistem türünü belirtir. Değer, virgülle ayrılmış bir dize listesidir. Her dize bir tür gösterir:

▪ Özel - İstek özel bir sistem içerir ve çeviri sırasında en az bir özel sistem kullanılmıştır.
▪ Ekip - Diğer tüm istekler

Yanıt durum kodları

Hata oluşursa, istek bir JSON hata yanıtı döndürür. Hata kodu, hatayı daha fazla kategorilere ayırmak için 3 basamaklı HTTP durum kodunu ve ardından 3 basamaklı bir sayıyı birleştiren 6 basamaklı bir sayıdır. Yaygın hata kodları v3 Çevirmen başvuru sayfasında bulunabilir.

Kod örnekleri: metni çevirme

Not

  • Her örnek, komutuyla docker run belirttiğiniz üzerinde localhost çalışır.
  • Kapsayıcınız çalışırken kapsayıcının localhost kendisini gösterir.
  • kullanmak localhost:5000zorunda değilsiniz. Konak ortamınızda henüz kullanımda olmayan herhangi bir bağlantı noktasını kullanabilirsiniz.

Tek bir girişi çevirme

Bu örnekte, tek bir cümlenin İngilizceden Basitleştirilmiş Çinceye nasıl çevrildiği gösterilmektedir.

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?'}]"

Yanıt gövdesi:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"}
        ]
    }
]

Dizi translations , girişteki tek metin parçasının çevirisini sağlayan bir öğe içerir.

Azure AI Translator uç noktasını sorgulama (metin)

Aşağıda, komutuyla belirttiğiniz localhost:5000 kullanan bir cURL HTTP isteği örneği verilmişti 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?'}]"

Not

Kapsayıcı hazır olmadan önce cURL POST isteğini denerseniz Hizmet geçici olarak kullanılamıyor yanıtı alırsınız. Kapsayıcı hazır olana kadar bekleyin ve yeniden deneyin.

Swagger API'sini kullanarak metni çevirme

İngilizce ↔ Almanca

  1. Swagger sayfasına gidin: http://localhost:5000/swagger/index.html
  2. GÖNDER/çevir'i seçin
  3. Deneyin'i seçin
  4. From parametresini olarak girinen
  5. To parametresini şu şekilde girin:de
  6. api-version parametresini olarak girin3.0
  7. Metinlerin altında değerini aşağıdaki JSON ile değiştirin string
  [
        {
            "text": "hello, how are you"
        }
  ]

Yürüt'e tıklayın, sonuçta elde edilen çeviriler Yanıt Gövdesi'nde çıkış olur. Aşağıdaki yanıtı görmeniz gerekir:

"translations": [
      {
          "text": "hallo, wie geht es dir",
          "to": "de"
      }
    ]

Python ile metin çevirme

İngilizce ↔ Fransızca

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 konsol uygulamasıyla metni çevirme

İngilizce ↔ İspanyolca

Visual Studio'yu başlatın ve yeni bir konsol uygulaması oluşturun. *.csproj Düğümü eklemek <LangVersion>7.1</LangVersion> için dosyayı düzenleyin; C# 7.1'i belirtir. Newtoonsoft.Json NuGet paketi sürüm 11.0.2'yi ekleyin.

içindeki Program.cs tüm mevcut kodu aşağıdaki betikle değiştirin:

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();
            }
        }
    }
}

Birden çok dizeyi çevirme

Aynı anda birden çok dizeyi çevirmek, istek gövdesinde bir dizi dize belirtmekle ilgili bir işlemdir.

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.'}]"

Yanıt, tüm metin parçalarının istektekiyle aynı sırada çevirisini içerir. Yanıt gövdesi:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"}
        ]
    },
    {
        "translations":[
            {"text":"我很好,谢谢你。","to":"zh-Hans"}
        ]
    }
]

Birden çok dile çevirme

Bu örnekte aynı girişin tek bir istekte birkaç dile nasıl çevrildiği gösterilmektedir.

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?'}]"

Yanıt gövdesi:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"},
            {"text":"Hallo, was ist dein Name?","to":"de"}
        ]
    }
]

İşaretle içeriği çevirme ve çevrilmiş içeriği belirtme

HTML sayfasından içerik veya XML belgesinden içerik gibi işaretlemeler içeren içerikleri çevirmek yaygın bir durumdır. İçerikleri etiketlerle çevirirken sorgu parametresini textType=html ekleyin. Ayrıca, bazı durumlarda belirli içerikleri çevirinin dışında tutmak yararlı olabilir. özniteliğini class=notranslate kullanarak özgün dilinde kalması gereken içeriği belirtebilirsiniz. Aşağıdaki örnekte, ikinci öğedeki içerik çevrilirken, ilk div öğenin içindeki div içerik çevrilmiyor.

<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>

Burada örnek bir istek gösterilmektedir.

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>'}]"

Yanıt:

[
    {
        "translations":[
            {"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
        ]
    }
]

Dinamik sözlükle çevir

Bir sözcük veya ifadeye uygulamak istediğiniz çeviriyi zaten biliyorsanız, istek içinde işaretleme olarak sağlayabilirsiniz. Dinamik sözlük yalnızca kişisel adlar ve ürün adları gibi uygun adlar için güvenlidir.

Sağlamak için işaretleme aşağıdaki söz dizimini kullanır.

<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>

Örneğin, "Wordomatic sözcüğü bir sözlük girdisidir" İngilizce cümlesini düşünün. Çeviride wordomatic sözcüğünü korumak için isteği gönderin:

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.'}]"

Sonuç:

[
    {
        "translations":[
            {"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
        ]
    }
]

Bu özellik veya ile textType=text textType=htmlaynı şekilde çalışır. Bu özellik tedbirli kullanılmalıdır. Çeviriyi özelleştirmenin uygun ve çok daha iyi bir yolu Özel Çeviri Aracı'nı kullanmaktır. Özel Çeviri bağlam ve istatistiksel olasılıkları tam olarak kullanır. çalışmanızı veya tümceciğinizi bağlamda gösteren eğitim verileri oluşturduysanız daha iyi sonuçlar elde edersiniz. Özel Çeviri Aracı hakkında daha fazla bilgi edinin.

İstek limitleri

Her çeviri isteği, çevirdiğiniz tüm hedef dillerde 50.000 karakterle sınırlıdır. Örneğin, üç farklı dile çevrilecek 3.000 karakterlik bir çevirme isteği göndermek, istek sınırını karşılayan 3000x3 = 9.000 karakterlik bir istek boyutuna neden olur. İstek sayısına göre değil karakter başına ücretlendirilirsiniz. Daha kısa istekler göndermenizi öneririz.

Aşağıdaki tabloda Translator çevirisi işlemi için dizi öğesi ve karakter sınırları listelemektedir.

İşlem Dizi öğesinin en büyük boyutu En fazla dizi öğesi sayısı En büyük istek boyutu (karakterler)
Çevir Kategori 10,000 100 50,000

Docker compose kullanma: Destekleyici kapsayıcılarla translator

Docker compose, genellikle adlı compose.yamltek bir YAML dosyası kullanarak çok kapsayıcılı uygulamaları yapılandırmanıza olanak tanıyan bir araçtır. docker compose up Kapsayıcı uygulamanızı başlatmak için komutunu ve docker compose down kapsayıcılarınızı durdurup kaldırmak için komutunu kullanın.

Docker Desktop CLI'yı yüklediyseniz Docker oluşturma ve önkoşullarını içerir. Docker Desktop'larınız yoksa Docker Compose'u Yüklemeye genel bakış bölümüne bakın.

Aşağıdaki tabloda, metin ve belge çevirisi işlemleriniz için gerekli destekleyici kapsayıcılar listelanmaktadır. Translator kapsayıcısı, Azure hesabınızdaki Azure AI Translator kaynağı aracılığıyla faturalama bilgilerini Azure'a gönderir.

İşlem İstek sorgusu Document type Destekleyici kapsayıcılar
•Metin çevirisi
• Belge Çevirisi
from Belirtilen. Office belgeleri Hiçbiri
•Metin çevirisi
• Belge Çevirisi
from belirtilmemiş. Kaynak dili belirlemek için otomatik dil algılama gerektirir. Office belgeleri ✔️ Metin analizi:dil kapsayıcısı
•Metin çevirisi
• Belge Çevirisi
from Belirtilen. Taranan PDF belgeleri ✔️ Görüntü İşleme:kapsayıcıyı okuma
•Metin çevirisi
• Belge Çevirisi
from kaynak dili belirlemek için otomatik dil algılama gerektiren belirtilmedi. Taranan PDF belgeleri ✔️ Metin analizi:dil kapsayıcısı

✔️ Görüntü İşleme:kapsayıcıyı okuma
Kapsayıcı görüntüleri ve etiketleri

Azure AI hizmetleri kapsayıcı görüntüleri Microsoft Yapıt Kayıt Defteri kataloğunda bulunabilir. Aşağıdaki tabloda, metin ve belge çevirisi için tam görüntü konumu listelenir:

Kapsayıcı Görüntü konumu Notlar
Translator: Metin çevirisi mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest MCR'de Azure AI hizmetlerinin Metin Çevirisi sürüm etiketlerinin tam listesini görüntüleyebilirsiniz.
Translator: Belge çevirisi TODO TODO
Metin analizi: dil mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest MCR'de Azure AI hizmetlerinin tam listesini Metin Analizi Dil sürümü etiketlerini görüntüleyebilirsiniz.
Görüntü İşleme: okuma mcr.microsoft.com/azure-cognitive-services/vision/read:latest Azure AI hizmetlerinin tam listesini görüntüleyebilir Görüntü İşleme MCR'de sürüm etiketlerini okuyunOCR.

Uygulamanızı oluşturma

  1. Tercih ettiğiniz düzenleyiciyi veya IDE'yi kullanarak uygulamanız için veya seçtiğiniz bir adla container-environment yeni bir dizin oluşturun.

  2. adlı compose.yamlyeni bir YAML dosyası oluşturun. Dosya için compose hem .yml hem de .yaml uzantıları kullanılabilir.

  3. Aşağıdaki YAML kod örneğini kopyalayıp dosyanıza compose.yaml yapıştırın. ve {TRANSLATOR_ENDPOINT_URI} değerini Azure portal Translator örneğinizdeki anahtar ve uç nokta değerleriyle değiştirin{TRANSLATOR_KEY}. kullandığınızdan document translation endpointemin olun.

  4. Üst düzey ad (azure-ai-translator, azure-ai-language, azure-ai-read) belirttiğiniz parametredir.

  5. container_name, çalıştırıldığında kapsayıcı için bir ad oluşturmak yerine docker compose bir ad ayarlayan isteğe bağlı bir parametredir.

    services:
      azure-ai-translator:
        container_name: azure-ai-translator
        image: mcr.microsoft.com/product/azure-cognitive-services/translator/text-translation:latest
        environment:
            - EULA=accept
            - billing={TRANSLATOR_ENDPOINT_URI}
            - apiKey={TRANSLATOR_KEY}
            - AzureAiLanguageHost=http://azure-ai-language:5000
            - AzureAiReadHost=http://azure-ai-read:5000
        ports:
              - "5000:5000"
        azure-ai-language:
          container_name: azure-ai-language
          image:  mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest
          environment:
              - EULA=accept
              - billing={TRANSLATOR_ENDPOINT_URI}
              - apiKey={TRANSLATOR_KEY}
        azure-ai-read:
          container_name: azure-ai-read
          image:  mcr.microsoft.com/azure-cognitive-services/vision/read:latest
          environment:
              - EULA=accept
              - billing={TRANSLATOR_ENDPOINT_URI}
              - apiKey={TRANSLATOR_KEY}
    
  6. Bir terminal açın, klasöre container-environment gidin ve kapsayıcıları aşağıdaki docker-compose komutla başlatın:

    docker compose up
    
  7. Kapsayıcıları durdurmak için aşağıdaki komutu kullanın:

    docker compose down
    

    İpucu

    docker compose Komut:

    • docker compose pause çalışan kapsayıcıları duraklatır.
    • docker compose unpause {your-container-name} duraklatılmış kapsayıcıları duraklatır.
    • docker compose restart tüm durdurulmuş ve çalışan kapsayıcıyı önceki tüm değişiklikleriyle yeniden başlatır. Yapılandırmanızda compose.yaml değişiklik yaparsanız, bu değişiklikler komutuyla docker compose restart güncelleştirilmez. Dosyadaki docker compose up güncelleştirmeleri ve değişiklikleri compose.yaml yansıtmak için komutunu kullanmanız gerekir.
    • docker compose ps -a durdurulan kapsayıcılar da dahil olmak üzere tüm kapsayıcıları listeler.
    • docker compose execçalışan bir kapsayıcıda ortam değişkenlerini ayırmak veya ayarlamak için komutları yürütmenize olanak tanır.

    Daha fazla bilgi için bkz. docker CLI başvurusu.

Sonraki Adımlar