Megosztás a következőn keresztül:


Tároló: Szöveg fordítása

Szöveg fordítása.

URL-cím kérése

POST kérés küldése ide:

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

Példakérés

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

Példa válasz

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

Kérelemparaméterek

A lekérdezési sztringen átadott kérelemparaméterek a következők:

Kötelező paraméterek

Lekérdezési paraméter Leírás Feltétel
api-verzió Az ügyfél által kért API verziója. Az értéknek meg kell lennie 3.0. Kötelező paraméter
from A bemeneti szöveg nyelvét adja meg. Kötelező paraméter
felhasználóként a(z) A kimeneti szöveg nyelvét adja meg. Használhatja például to=de a német nyelvre való fordítást.
A lekérdezési sztring paraméterének megismétlésével egyszerre több nyelvre is lefordítható. Például fordíthat to=de&to=it németre és olaszra.
Kötelező paraméter

Választható paraméterek

Lekérdezési paraméter Leírás
textType Nem kötelező paraméter.
Meghatározza, hogy a lefordított szöveg egyszerű vagy HTML-szöveg-e. Minden HTML-nek jól formázott, teljes elemnek kell lennie. A lehetséges értékek a következők: plain (alapértelmezett) vagy html.
includeSentenceLength Nem kötelező paraméter.
Megadja, hogy a bemeneti szöveg és a lefordított szöveg mondathatárai szerepeljenek-e. A lehetséges értékek a következők: true vagy false (alapértelmezett).

Kérésfejlécek

Fejlécek Leírás Feltétel
Hitelesítési fejlécek Tekintse mega hitelesítéshez elérhető lehetőségeket. Szükséges kérelemfejléc
Content-Type Megadja a hasznos adat tartalomtípusát.
Az elfogadott érték a .application/json; charset=UTF-8
Szükséges kérelemfejléc
Tartalomhossz A kérelem törzsének hossza. Választható
X-ClientTraceId Ügyfél által létrehozott GUID a kérés egyedi azonosításához. Ezt a fejlécet kihagyhatja, ha a nyomkövetési azonosítót a lekérdezési sztringben egy névvel ellátott lekérdezési paraméterrel adja meg ClientTraceId. Választható

Kérés törzse

A kérelem törzse egy JSON-tömb. Minden tömbelem egy JSON-objektum, amelynek neve Textegy sztringtulajdonság, amely a lefordítandó sztringet jelöli.

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

A következő korlátozások érvényesek:

  • A tömb legfeljebb 100 elemet tartalmazhat.
  • A kérelemben szereplő teljes szöveg nem haladhatja meg a 10 000 karaktert, szóközökkel együtt.

Választörzs

A sikeres válasz egy JSON-tömb, amely a bemeneti tömb minden sztringjéhez egy eredményt ad. Az eredményobjektumok a következő tulajdonságokat tartalmazzák:

  • translations: Fordítási eredmények tömbje. A tömb mérete megegyezik a lekérdezési paraméterben megadott célnyelvek számával to . A tömb minden eleme a következőket tartalmazza:

  • to: A célnyelv nyelvi kódját képviselő sztring.

  • text: A lefordított szöveget tartalmazó sztring.

  • sentLen: Egy objektum, amely mondathatárokat ad vissza a bemeneti és kimeneti szövegekben.

  • srcSentLen: Egy egész számtömb, amely a bemeneti szövegben lévő mondatok hosszát jelöli. A tömb hossza a mondatok száma, az értékek pedig az egyes mondatok hossza.

  • transSentLen: Egy egész számtömb, amely a lefordított szöveg mondatainak hosszát jelöli. A tömb hossza a mondatok száma, az értékek pedig az egyes mondatok hossza.

    A mondathatárok csak akkor lesznek belefoglalva, ha a kérelem paramétere includeSentenceLength .true

    • sourceText: Egy objektum, amelynek egyetlen sztringtulajdonsága van elnevezve text, amely a forrásnyelv alapértelmezett szkriptjében adja meg a bemeneti szöveget. sourceText tulajdonság csak akkor jelenik meg, ha a bemenet olyan szkriptben van kifejezve, amely nem a nyelv szokásos szkriptje. Ha például a bemenet latin betűs arab, akkor sourceText.text ugyanaz az arab szöveg lesz, amelyet arab szkriptté alakítottak át.

Válaszfejlécek

Fejlécek Leírás
X-RequestId A szolgáltatás által a kérés azonosítására és hibaelhárítási célokra használt érték.
X-MT-System Meghatározza a fordításhoz használt rendszertípust a fordításhoz kért minden egyes "to" nyelvhez. Az érték a sztringek vesszővel tagolt listája. Minden sztring egy típust jelez:

▪ Egyéni – A kérelem egyéni rendszert tartalmaz, és a fordítás során legalább egy egyéni rendszert használtak.
▪ Csapat – Minden más kérés

Válaszállapot-kódok

Hiba esetén a kérés JSON-hibaválaszt ad vissza. A hibakód egy 6 jegyű szám, amely egyesíti a 3 jegyű HTTP-állapotkódot, majd egy háromjegyű számot a hiba további kategorizálásához. A gyakori hibakódokért tekintse meg a 3-as verziójú Translator referenciaoldalát.

Kódminták: szöveg fordítása

Feljegyzés

  • Minden minta a localhost paranccsal megadotton docker run fut.
  • Amíg a tároló fut, localhost maga a tárolóra mutat.
  • Nem kell használnia localhost:5000. Bármilyen portot használhat, amely még nincs használatban a gazdagépkörnyezetben.

Egyetlen bemenet lefordítása

Ez a példa bemutatja, hogyan fordíthat le egyetlen mondatot angolról egyszerűsített kínaira.

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

A válasz törzse a következő:

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

A translations tömb egy elemet tartalmaz, amely a bemenetben lévő egyetlen szöveg fordítását biztosítja.

Azure AI Translator-végpont lekérdezése (szöveg)

Íme egy példa a cURL HTTP-kérésre a localhost:5000 parancs használatával, amelyet a docker run következő paranccsal adott meg:

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

Feljegyzés

Ha megkísérli a cURL POST kérést, mielőtt a tároló készen áll, a szolgáltatás átmenetileg nem érhető el válaszként. Várjon, amíg a tároló készen áll, majd próbálkozzon újra.

Szöveg fordítása a Swagger API használatával

Angol német ↔

  1. Lépjen a Swagger lapra: http://localhost:5000/swagger/index.html
  2. Válassza a POST /translate lehetőséget
  3. Válassza ki a Kipróbálás lehetőséget
  4. Adja meg a From paramétert a következőként:en
  5. Adja meg a To paramétert a következőként : de
  6. Adja meg az api-version paramétert a következőként: 3.0
  7. Szöveg alatt cserélje le string a következő JSON-t
  [
        {
            "text": "hello, how are you"
        }
  ]

Válassza a Végrehajtás lehetőséget, az eredményként kapott fordítások a válasz törzsében jelennek meg. A következő választ kell látnia:

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

Szöveg fordítása Pythonnal

Angol francia ↔

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=(',', ': ')))

Szöveg fordítása a C#/.NET konzolalkalmazással

Angol spanyol ↔

Indítsa el a Visual Studiót, és hozzon létre egy új konzolalkalmazást. Szerkessze a *.csproj fájlt a csomópont hozzáadásához – megadja a <LangVersion>7.1</LangVersion> C# 7.1-et. Adja hozzá a Newtoonsoft.Json NuGet csomag 11.0.2-es verzióját.

Cserélje le az Program.cs összes meglévő kódot a következő szkriptre:

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

Több sztring fordítása

Több sztring egyszerre történő fordítása egyszerűen egy sztringtömb megadásának kérdése a kérelem törzsében.

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

A válasz az összes szövegrész fordítását pontosan a kérelemben megadott sorrendben tartalmazza. A válasz törzse a következő:

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

Fordítás több nyelvre

Ez a példa bemutatja, hogyan fordíthatja le ugyanazt a bemenetet több nyelvre egy kérelemben.

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

A válasz törzse a következő:

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

Tartalom fordítása korrektúrával és lefordított tartalom megadása

Gyakori, hogy korrektúrát tartalmazó tartalmakat fordít le, például HTML-oldalról származó tartalmat vagy XML-dokumentumból származó tartalmat. Adja meg a lekérdezési paramétert textType=html a címkékkel ellátott tartalom fordításakor. Emellett néha hasznos lehet bizonyos tartalmakat kizárni a fordításból. Az attribútummal class=notranslate megadhatja az eredeti nyelven maradó tartalmat. Az alábbi példában az első div elem tartalma nem lesz lefordítva, míg a második div elem tartalma lesz lefordítva.

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

Az alábbiakban egy mintakérést mutatunk be.

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

A válasz a következő:

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

Fordítás dinamikus szótárral

Ha már tudja, hogy milyen fordítást szeretne alkalmazni egy szó vagy kifejezés esetében, megadhatja korrektúraként a kérésben. A dinamikus szótár csak a megfelelő főnevek, például a személyes nevek és a terméknevek számára biztonságos.

Az ellátandó korrektúra a következő szintaxist használja.

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

Vegyük például a következő angol mondatot: "A wordomatic szó szótári bejegyzés". A wordomatic szó fordításban való megőrzéséhez küldje el a kérést:

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

Az eredmény a következő:

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

Ez a funkció ugyanúgy működik, mint a .textType=texttextType=html A funkciót takarékosan kell használni. A fordítás testreszabásának megfelelő és sokkal jobb módja a Custom Translator használata. A Custom Translator teljesen körűen használja a kontextust és a statisztikai valószínűségeket. Ha olyan betanítási adatokat hozott létre, amelyek kontextusban jelenítik meg a munkáját vagy a kifejezést, jobb eredményeket érhet el. További információ a Custom Translatorről.

Kérelmekre vonatkozó korlátok

Minden fordítási kérelem legfeljebb 10 000 karakter hosszúságú lehet az összes lefordított célnyelven. Ha például 3000 karakterből álló fordítási kérelmet küld három különböző nyelvre, az 3000x3 = 9000 karakteres kérelemméretet eredményez, amely megfelel a kérelemkorlátnak. Karakterenként számítunk fel díjat, nem pedig a kérések száma alapján. Javasoljuk, hogy küldjön rövidebb kéréseket.

Az alábbi táblázat a Translator fordítási művelet tömbelemeit és karakterkorlátait sorolja fel.

Művelet Tömbelem maximális mérete Tömbelemek maximális száma Kérelem maximális mérete (karakterek)
Lefordítani 10,000. 100 10,000.

Docker Compose használata: Translator támogató tárolókkal

A Docker compose egy olyan eszköz, amellyel többtárolós alkalmazásokat konfigurálhat egyetlen, jellemzően elnevezett compose.yamlYAML-fájl használatával. docker compose up A parancs használatával indítsa el a tárolóalkalmazást, a parancsot pedig docker compose down a tárolók leállításához és eltávolításához.

Ha telepítette a Docker Desktop parancssori felületét, az tartalmazza a Docker-összeállítást és annak előfeltételeit. Ha nem rendelkezik Docker Desktoppal, tekintse meg a Docker Compose telepítésének áttekintését.

Az alábbi táblázat a szöveg- és dokumentumfordítási műveletekhez szükséges támogató tárolókat sorolja fel. A Translator-tároló számlázási adatokat küld az Azure-nak az Azure-fiók Azure AI Translator-erőforrásán keresztül.

Művelet Lekérdezés kérése Dokumentumtípusok Támogató tárolók
• Szövegfordítás
• Dokumentumfordítás
from Megadott. Office-dokumentumok Egyik sem
• Szövegfordítás
• Dokumentumfordítás
from nincs megadva. A forrásnyelv meghatározásához automatikus nyelvfelismerés szükséges. Office-dokumentumok Szövegelemzés:nyelvi tároló ✔️
• Szövegfordítás
• Dokumentumfordítás
from Megadott. Beolvasott PDF-dokumentumok Vision:read container ✔️
• Szövegfordítás
• Dokumentumfordítás
from nincs megadva, amely automatikus nyelvfelismerést igényel a forrásnyelv meghatározásához. Beolvasott PDF-dokumentumok Szövegelemzés:nyelvi tároló ✔️

Vision:read container ✔️
Tárolórendszerképek és címkék

Az Azure AI-szolgáltatások tárolórendszerképe a Microsoft Eszközjegyzék katalógusban található. Az alábbi táblázat a szöveg- és dokumentumfordítás teljes képhelyét sorolja fel:

Tároló Kép helye Jegyzetek
Fordító: Szövegfordítás mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Megtekintheti az Azure AI-szolgáltatások szövegfordítási verziócímkék teljes listáját az MCR-en.
Translator: Dokumentumfordítás TODO TODO
Szövegelemzés: nyelv mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Az Azure AI-szolgáltatások Text Analytics Nyelvi verziócímkék teljes listáját megtekintheti az MCR-en.
Látás: olvasás mcr.microsoft.com/azure-cognitive-services/vision/read:latest Megtekintheti az Azure AI-szolgáltatások Computer Vision Read OCR verziócímkék teljes listáját az MCR-en.

Az alkalmazás létrehozása

  1. Az előnyben részesített szerkesztő vagy IDE használatával hozzon létre egy új könyvtárat az alkalmazáshoz, container-environment vagy hozzon létre egy tetszőleges nevet.

  2. Hozzon létre egy új YAML-fájlt .compose.yaml A fájlhoz mind a .yml, mind a compose .yaml kiterjesztés használható.

  3. Másolja és illessze be a következő YAML-kódmintát a compose.yaml fájlba. Cserélje le és {TRANSLATOR_ENDPOINT_URI} cserélje le {TRANSLATOR_KEY} az Azure Portal Translator-példány kulcs- és végpontértékeit. Győződjön meg arról, hogy a document translation endpoint.

  4. A legfelső szintű név (azure-ai-translator, azure-ai-language, azure-ai-read) a megadott paraméter.

  5. Ez container_name egy nem kötelező paraméter, amely a tároló nevét állítja be a futtatáskor, ahelyett, hogy nevet adne docker compose .

    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. Nyisson meg egy terminált, lépjen a container-environment mappára, és indítsa el a tárolókat a következő docker-compose paranccsal:

    docker compose up
    
  7. A tárolók leállításához használja a következő parancsot:

    docker compose down
    

    Tipp.

    docker compose Parancsok:

    • docker compose pause szünetelteti a tárolók futtatását.
    • docker compose unpause {your-container-name} feloldja a szüneteltetett tárolókat.
    • docker compose restart újraindítja az összes leállított és futó tárolót az összes korábbi módosításával együtt. Ha módosítja a konfigurációt compose.yaml , ezek a módosítások nem frissülnek a docker compose restart paranccsal. A fájl frissítéseinek és változásainak megjelenítéséhez a docker compose up parancsot kell használnia compose.yaml .
    • docker compose ps -a listázza az összes tárolót, beleértve a leállított tárolókat is.
    • docker compose execlehetővé teszi parancsok futtatását a környezeti változók leválasztásához vagy beállításához egy futó tárolóban.

    További információ: Docker CLI-referencia.

Következő lépések