Menggunakan REST API secara terprogram
Terjemahan Dokumen adalah fitur berbasis cloud dari layanan Penerjemah Azure AI. Anda dapat menggunakan DOCUMENT Translation API untuk menerjemahkan seluruh dokumen secara asinkron dalam bahasa yang didukung dan berbagai format file sambil mempertahankan struktur dokumen sumber dan pemformatan teks. Dalam panduan cara ini, Anda belajar menggunakan API Terjemahan Dokumen dengan bahasa pemrograman pilihan Anda dan HTTP REST API.
Prasyarat
Catatan
Biasanya, saat Anda membuat sumber daya Azure AI di portal Azure, Anda memiliki opsi untuk membuat kunci multi-layanan atau kunci layanan tunggal. Namun, Terjemahan Dokumen saat ini hanya didukung di sumber daya Penerjemah (layanan tunggal), dan tidak termasuk dalam sumber daya layanan Azure AI (multi-layanan).
Terjemahan Dokumen didukung dalam Paket Layanan Standar S1 (Bayar sesuai penggunaan) dan Paket Diskon Volume C2, C3, C4, dan D3. Lihat Harga layanan Azure AI—Penerjemah.
Untuk memulai, Anda memerlukan:
Akun Azure aktif. Jika Anda tidak memilikinya, Anda dapat membuat akun gratis
Akun Azure Blob Storage. Anda juga perlu membuat kontainer di akun Azure Blob Storage untuk file sumber dan target Anda:
- Kontainer sumber. Kontainer ini adalah tempat Anda mengunggah file yang akan diterjemahkan (wajib).
- Kontainer target. Kontainer ini adalah tempat file terjemahan Anda disimpan (diperlukan).
Sumber daya Penerjemah layanan tunggal (bukan sumber daya layanan Azure AI multi-layanan):
Selesaikan proyek Penerjemah dan bidang detail instans sebagai berikut:
Langganan. Pilih salah satu langganan Azure Anda yang tersedia.
Grup Sumber Daya. Anda dapat membuat grup sumber daya baru atau menambahkan sumber daya Anda ke grup sumber daya yang sudah ada sebelumnya, yang memiliki siklus hidup, izin, dan kebijakan yang sama.
Wilayah Sumber Daya. Pilih Global kecuali bisnis atau aplikasi Anda memerlukan wilayah tertentu. Jika Anda berencana menggunakan identitas terkelola yang ditetapkan sistem untuk autentikasi, pilih wilayah geografis seperti AS Barat.
Nama. Masukkan nama yang Anda pilih untuk sumber daya Anda. Nama yang Anda pilih harus unik dalam Azure.
Catatan
Penerjemahan Dokumen memerlukan titik akhir domain kustom. Nilai yang Anda masukkan dalam bidang Nama akan menjadi parameter nama domain kustom untuk titik akhir.
Tingkat harga. Penerjemahan Dokumen tidak didukung di tingkat gratis. Untuk mencoba layanan, pilih Standar S1.
Pilih Tinjau + Buat.
Tinjau ketentuan layanan dan pilih Buat untuk menyebarkan sumber daya Anda.
Setelah sumber daya Anda berhasil disebarkan, pilih Buka sumber daya untuk mengambil kunci dan titik akhir Anda.
Mengambil kunci dan titik akhir domain kustom Anda
- Permintaan ke layanan Penerjemah memerlukan kunci baca-saja dan titik akhir kustom untuk mengautentikasi akses. Titik akhir domain kustom adalah URL yang diformat dengan nama sumber daya, nama host, dan subdirektor Penerjemah Anda dan tersedia di portal Azure.
Jika Anda membuat sumber daya baru, setelah disebarkan, pilih Buka sumber daya. Jika Anda memiliki sumber daya Terjemahan Dokumen yang sudah ada, langsung buka halaman sumber daya.
Di rel kiri, di bagian Manajemen Sumber Daya, pilih Kunci dan Titik Akhir.
Salin dan tempel lokasi Anda
key
dandocument translation endpoint
di lokasi yang nyaman, seperti Microsoft Notepad. Hanya satu kunci yang diperlukan untuk melakukan panggilan API.Anda
key
dandocument translation endpoint
ke dalam sampel kode untuk mengautentikasi permintaan Anda ke layanan Terjemahan Dokumen.
Mendapatkan kunci Anda
Permintaan ke layanan Penerjemah memerlukan kunci baca-saja untuk mengautentikasi akses.
- Jika Anda membuat sumber daya baru, setelah disebarkan, pilih Buka sumber daya. Jika Anda memiliki sumber daya Terjemahan Dokumen yang sudah ada, langsung buka halaman sumber daya.
- Di rel kiri, di bagian Manajemen Sumber Daya, pilih Kunci dan Titik Akhir.
- Salin dan tempel kunci di lokasi yang mudah diakses, seperti Microsoft Notepad.
- Anda menempelkannya ke dalam sampel kode untuk mengautentikasi permintaan Anda ke layanan Terjemahan Dokumen.
Membuat kontainer Azure Blob Storage
Anda perlu membuat kontainer di akun Azure Blob Storage untuk file sumber dan target.
- Kontainer sumber. Kontainer ini adalah tempat Anda mengunggah file yang akan diterjemahkan (wajib).
- Kontainer target. Kontainer ini adalah tempat file terjemahan Anda disimpan (diperlukan).
Catatan
Terjemahan Dokumen mendukung glosarium sebagai blob dalam kontainer target (bukan wadah glosarium terpisah). Jika ingin menyertakan glosarium khusus, tambahkan ke wadah target dan sertakan glossaryUrl
dengan permintaan. Jika pasangan bahasa terjemahan tidak ada dalam glosarium, itu tidak akan diterapkan. Lihat Menerjemahkan dokumen menggunakan glosarium khusus
Membuat token akses SAS untuk Terjemahan Dokumen
sourceUrl
, targetUrl
, dan glossaryUrl
opsional harus menyertakan token Tanda Tangan Akses Bersama (SAS), yang ditambahkan sebagai string kueri. Token dapat ditetapkan ke kontainer Anda atau blob tertentu. Lihat Membuat token SAS untuk pemrosesan Terjemahan Dokumen.
- Kontainer sumber atau blob Anda harus menunjuk akses baca dan daftar.
- Kontainer atau blob target Anda harus menunjuk akses tulis dan daftar.
- Blob glosarium Anda harus menunjuk akses baca dan daftar.
Tip
- Jika Anda menerjemahkan beberapa file (blob) dalam suatu operasi, delegasikan akses SAS pada tingkat kontainer.
- Jika Anda menerjemahkan satu file (blob) dalam operasi, delegasikan akses SAS di tingkat blob.
- Sebagai alternatif token SAS, Anda dapat menggunakan identitas terkelola yang ditetapkan sistem untuk autentikasi.
Permintaan HTTP
Permintaan terjemahan batch asinkron dikirimkan ke titik akhir layanan Penerjemah Anda melalui permintaan POST. Jika berhasil, metode POST mengembalikan 202 Accepted
kode respons dan layanan membuat permintaan batch. Dokumen yang diterjemahkan tercantum dalam kontainer target Anda.
Untuk informasi terperinci mengenai batas permintaan Layanan Penerjemah Azure AI, lihat Batas permintaan Terjemahan Dokumen.
Header HTTP
Header berikut disertakan dengan setiap permintaan Document Translation API:
Header HTTP | Deskripsi |
---|---|
Ocp-Apim-Subscription-Key | Diperlukan: Nilainya adalah kunci Azure untuk sumber daya layanan Penerjemah atau Azure AI Anda. |
Content-Type | Wajib: Tentukan jenis konten payload. Nilai yang diterima adalah application/json atau charset=UTF-8. |
Properti isi permintaan POST
- URL permintaan POST adalah POST
https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.1/batches
. - Isi permintaan POST adalah objek JSON bernama
inputs
. - Objek
inputs
berisi alamat kontainersourceURL
dantargetURL
untuk pasangan bahasa sumber dan target Anda. prefix
dansuffix
adalah string yang peka huruf besar/kecil untuk memfilter dokumen di jalur sumber untuk penerjemahan. Bidangprefix
sering digunakan untuk menguraikan subfolder untuk penerjemahan. Bidangsuffix
paling sering digunakan untuk ekstensi file.- Nilai untuk bidang
glossaries
(opsional) diterapkan saat dokumen sedang diterjemahkan. targetUrl
untuk bahasa target harus unik.
Catatan
Jika file dengan nama yang sama sudah ada di tujuan, pekerjaan akan gagal.
Menerjemahkan semua dokumen dalam kontainer
{
"inputs": [
{
"source": {
"sourceUrl": "{sourceSASUrl}"
},
"targets": [
{
"targetUrl": "{targetSASUrl}",
"language": "fr"
}
]
}
]
}
Menerjemahkan dokumen tertentu dalam kontainer
- Tentukan
"storageType": "File"
. - Jika Anda tidak menggunakan identitas terkelola yang ditetapkan sistem untuk autentikasi, pastikan Anda membuat URL sumber & token SAS untuk blob/dokumen tertentu (bukan untuk kontainer).
- Pastikan Anda menentukan nama file target sebagai bagian dari URL target – meskipun token SAS masih untuk kontainer.
- Permintaan sampel ini mengembalikan satu dokumen yang diterjemahkan ke dalam dua bahasa target.
{
"inputs": [
{
"storageType": "File",
"source": {
"sourceUrl": "{sourceSASUrl}"
},
"targets": [
{
"targetUrl": "{targetSASUrl}",
"language": "es"
},
{
"targetUrl": "{targetSASUrl}",
"language": "de"
}
]
}
]
}
Menerjemahkan dokumen menggunakan glosarium kustom
{
"inputs": [
{
"source": {
"sourceUrl": "{sourceSASUrl}"
},
"targets": [
{
"targetUrl": "{targetSASUrl}",
"language": "es",
"glossaries": [
{
"glossaryUrl": "{glossaryUrl/en-es.xlf}",
"format": "xliff"
}
]
}
]
}
]
}
Menggunakan kode untuk mengirimkan permintaan Terjemahan Dokumen
Menyiapkan Platform pengodean
- Buat proyek baru.
- Ganti Program.cs dengan sampel kode C#.
- Atur nilai titik akhir, kunci langganan, dan URL kontainer Anda dalam Program.cs.
- Tambahkan paket Newtonsoft.Json menggunakan .NET CLI untuk memproses data JSON.
- Jalankan program dari direktori proyek.
Penting
Untuk sampel kode, Anda akan membuat kode keras URL Tanda Tangan Akses Bersama (SAS) jika ditunjukkan. Ingatlah untuk menghapus URL SAS dari kode Anda setelah selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses informasi masuk Anda seperti Azure Managed Identity. Untuk informasi selengkapnya, lihat Keamanan Azure Storage.
Anda mungkin perlu memperbarui bidang berikut, bergantung pada operasi:
endpoint
basePath
key
sourceURL
targetURL
glossaryURL
id
(ID pekerjaan)
Mencari nilai id
- Anda dapat menemukan pekerjaan
id
di nilai URL HeaderOperation-Location
respons metode POSTstart-batch-translation
. String alfanumerik yang/document/
mengikuti parameter adalah pekerjaanid
operasi :
Header respons | URL Respons |
---|---|
Operasi-Lokasi | {document-translation-endpoint}/translator/document/9dce0aa9-78dc-41ba-8cae-2e2f3c2ff8ec ?api-version={date} |
- Anda juga dapat menggunakan permintaan status get-translations untuk mengambil daftar pekerjaan terjemahan dan tugasnya
id
.
Mulai terjemahan batch asinkron
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text;
class Program
{
static readonly string route = "?api-version={date}";
private static readonly string basePath = "{your-document-translation-endpoint}/translator/document/batches";
private static readonly string key = "{your-api-key}";
static readonly string json = ("{\"inputs\": [{\"source\": {\"sourceUrl\": \"https://YOUR-SOURCE-URL-WITH-READ-LIST-ACCESS-SAS\",\"storageSource\": \"AzureBlob\",\"language\": \"en\"}, \"targets\": [{\"targetUrl\": \"https://YOUR-TARGET-URL-WITH-WRITE-LIST-ACCESS-SAS\",\"storageSource\": \"AzureBlob\",\"category\": \"general\",\"language\": \"es\"}]}]}");
static async Task Main(string[] args)
{
using HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
request.Method = HttpMethod.Post;
request.RequestUri = new Uri(basePath + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", key);
request.Content = content;
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
if (response.IsSuccessStatusCode)
{
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine();
Console.WriteLine($"Response Headers:");
Console.WriteLine(response.Headers);
}
else
Console.Write("Error");
}
}
}
Dapatkan format dokumen yang didukung
Ambil daftar format file yang didukung. Jika berhasil, metode ini akan menampilkan kode respons 200 OK
.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string basePath = "{your-document-translation-endpoint}/translator/document/formats";
static readonly string route = "?api-version={date}&type=document";
private static readonly string key = "{your-api-key}";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(basePath + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", key);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Mendapatkan status untuk pekerjaan terjemahan
Dapatkan status saat ini untuk satu pekerjaan dan ringkasan semua pekerjaan pada permintaan Terjemahan Dokumen. Jika berhasil, metode ini akan menampilkan kode respons 200 OK
.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string basePath = "{your-document-translation-endpoint}/translator/document/batches/{id}";
static readonly string route = "?api-version={date}";
private static readonly string key = "{your-api-key}";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(basePath + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", key);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
}
Mendapatkan status untuk dokumen tertentu
Ringkasan singkat
Ambil status untuk dokumen tertentu dalam permintaan Terjemahan Dokumen. Jika berhasil, metode ini akan menampilkan kode respons 200 OK
.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string basePath = "{document-translation-endpoint}/translator/document/batches/{id}/documents/{documentId}";
static readonly string route = "?api-version={date}";
private static readonly string key = "{your-api-key}";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(basePath + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", key);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Menghapus pekerjaan
Ringkasan singkat
Batalkan tugas yang saat ini sedang diproses atau diantrikan. Hanya dokumen yang terjemahannya tidak dimulai yang dibatalkan.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string basePath = "{your-document-translation-endpoint}/translator/document/batches/{id}";
static readonly string route = "?api-version={date}";
private static readonly string key = "{your-api-key}";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Delete;
request.RequestUri = new Uri(basePath + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", key);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Kode status HTTP umum
Kode status HTTP | Deskripsi | Kemungkinan alasan |
---|---|---|
200 | OK | Permintaan berhasil. |
400 | Permintaan Buruk | Parameter yang diperlukan hilang, kosong, atau null. Atau, nilai yang diteruskan ke parameter yang diperlukan atau opsional tidak valid. Masalah umum adalah header yang terlalu panjang. |
401 | Tidak diizinkan | Permintaan tersebut tidak diotorisasi. Periksa untuk memastikan kunci atau token Anda valid dan berada di wilayah yang benar. Saat mengelola langganan Anda di portal Azure, pastikan Anda menggunakan sumber daya layanan tunggal Penerjemah bukan sumber daya multi-layanan layanan Azure AI. |
429 | Terlalu Banyak Permintaan | Anda melebihi kuota atau tingkat permintaan yang diizinkan untuk langganan Anda. |
502 | Gateway buruk | Masalah jaringan atau sisi server. Juga dapat menunjukkan header yang tidak valid. |