Anda dapat menggunakan fitur penerjemahan dokumen cerdas untuk menerjemahkan teks ke dalam berbagai bahasa, seperti Cina dan Inggris. Fitur ini memanfaatkan artificial intelligence (AI) untuk memberikan terjemahan yang efisien, akurat, dan nyaman.
Prasyarat
Buat proyek IMM dan sambungkan ke bucket Object Storage Service (OSS) tujuan. Untuk informasi lebih lanjut, lihat Memulai dan AttachOSSBucket.
Berikan izin IMM yang diperlukan kepada identitas akses Anda. Untuk informasi lebih lanjut, lihat Izin.
Cara memanggil
Fitur penerjemahan dokumen cerdas dipanggil secara sinkron menggunakan parameter pemrosesan Object Storage Service (OSS) x-oss-process. Semua permintaan harus dikirim menggunakan metode POST. Anda dapat menggunakan kit pengembangan perangkat lunak (SDK) atau memanggil API secara langsung.
Aksi: doc/translate
Parameter
Parameter permintaan
Parameter | Tipe | Diperlukan | Deskripsi |
bahasa | string | Ya | Bahasa target untuk terjemahan. Nilai valid:
|
konten | string | Ya | Konten dokumen yang akan diterjemahkan. Konten tersebut harus dienkripsi Base64 dengan aman URL. Catatan
|
format | string | Tidak | Metode untuk mengembalikan data. Nilai valid:
|
Parameter tanggapan
Parameter | Tipe | Deskripsi |
RequestId | string | ID dari permintaan. |
Output | struct | Konten output. Node anak: Text dan FinishReason |
Text | string | Hasil dari permintaan. Node induk: Output |
FinishReason | string | Status pembuatan hasil. Nilai valid:
Node induk: Output |
Menggunakan SDK
Fitur penerjemahan dokumen cerdas hanya mendukung pemrosesan sinkron. Bagian berikut menyediakan contoh kode yang menunjukkan cara menggunakan SDK umum untuk memanggil fitur penerjemahan dokumen cerdas menggunakan parameter pemrosesan. Untuk menggunakan SDK lainnya, sesuaikan kode berdasarkan contoh berikut.
Java
Anda harus menggunakan OSS SDK for Java versi 3.17.4 atau lebih baru.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.model.GenericResult;
import com.aliyun.oss.model.ProcessObjectRequest;
import java.io.IOException;
import java.util.Formatter;
public class Demo {
public static void main(String[] args) throws ClientException, com.aliyuncs.exceptions.ClientException {
// Atur yourEndpoint ke endpoint wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah umum Alibaba Cloud, misalnya, cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Tentukan teks yang akan diterjemahkan.
String content = "Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet. Dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus.";
String encodeContent = BinaryUtil.toBase64String(content.getBytes()).replaceAll("\\+","-")
.replaceAll("/","_").replaceAll("=","");
// Buat instance OSSClient.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
// Bangun instruksi pemrosesan untuk terjemahan dokumen cerdas.
styleFormatter.format("doc/translate,language_en_US,content_%s",encodeContent);
System.out.println(sbStyle.toString());
ProcessObjectRequest request = new ProcessObjectRequest(bucketName, key, sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
String json = IOUtils.readStreamAsString(processResult.getResponse().getContent(), "UTF-8");
processResult.getResponse().getContent().close();
System.out.println(json);
} catch (OSSException oe) {
System.out.println("Tangkap OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
+ "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Tangkap ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "seperti tidak dapat mengakses jaringan.");
System.out.println("Pesan Kesalahan:" + ce.getMessage());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
PHP
Anda harus menggunakan OSS SDK for PHP versi 2.7.0 atau lebih baru.
<?php
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$ak = getenv('OSS_ACCESS_KEY_ID');
$sk = getenv('OSS_ACCESS_KEY_SECRET');
// Tentukan nama bucket, misalnya, examplebucket.
$bucket = 'examplebucket';
// Tentukan nama file. Ini hanya digunakan sebagai placeholder. Konten file ini tidak dibaca selama terjemahan dokumen cerdas.
$objectKey = 'example.doc';
// Tentukan teks yang akan diterjemahkan.
$txt = "Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet. Dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus.";
$base64url = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($txt));
// Bangun instruksi pemrosesan untuk terjemahan dokumen cerdas.
$body = sprintf("x-oss-process=doc/translate,language_en_US,content_%s", $base64url);
$httpVerb = 'POST';
$contentMd5 = base64_encode(md5($body, true));
$contentType = '';
$date = gmdate('D, d M Y H:i:s T');
$stringToSign = $httpVerb . "\n" . $contentMd5 . "\n" . $contentType . "\n" . $date . "\n" . "/{$bucket}/{$objectKey}?x-oss-process";
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $sk, true));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://{$bucket}.oss-cn-hangzhou.aliyuncs.com/{$objectKey}?x-oss-process");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Date: ' . $date,
'Authorization: OSS ' . $ak . ':' . $signature,
'Content-Type: ' . $contentType,
'Content-Md5:' . $contentMd5,
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($response === false) {
echo "Error: " . curl_error($ch);
} else {
if ($httpcode == 200) {
var_dump($response);
} else {
echo "Error: HTTP code " . $httpcode;
}
}Go
Anda harus menggunakan OSS SDK for Go versi 3.0.2 atau lebih baru.
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"io"
"os"
"strings"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
type TextData struct {
RequestId string `json:"RequestId"`
Output struct {
Text string `json:"Text"`
FinishReason string `json:"FinishReason"`
} `json:"Output"`
}
func main() {
// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket, misalnya, examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
params := make(map[string]interface{})
params["x-oss-process"] = nil
// Tentukan teks yang akan diterjemahkan.
txt := "Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet. Dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus."
// Bangun instruksi pemrosesan untuk terjemahan dokumen cerdas.
data := fmt.Sprintf("x-oss-process=doc/translate,language_en_US,content_%v", base64.URLEncoding.EncodeToString([]byte(txt)))
response, err := bucket.Do("POST", "example.doc", params, nil, strings.NewReader(data), nil)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer response.Body.Close()
jsonData, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
var text TextData
err = json.Unmarshal(jsonData, &text)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("RequestId:%v\n", text.RequestId)
fmt.Printf("Text:%v\n", text.Output.Text)
fmt.Printf("FinishReason:%v\n", text.Output.FinishReason)
}
Gunakan API
Operasi sebelumnya didasarkan pada API. Jika program Anda memiliki persyaratan penyesuaian tinggi, Anda dapat langsung mengirim permintaan REST API. Untuk melakukannya, Anda harus menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi lebih lanjut tentang cara menghitung nilai header permintaan umum `Authorization`, lihat Signature V4 (disarankan).
Mode NAT
Mode ini mengembalikan hasil terjemahan lengkap sekaligus.
Contoh permintaan
File untuk diproses: example.doc
Teks untuk diterjemahkan: "Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet. Dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus."
Bahasa target: en_US
Format respons: json
POST /example.doc?x-oss-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-process=doc/translate,language_en_US,content_5aSq6Ziz57O755Sx5aSq6Ziz5Lul5Y-K546v57uV5YW26L-Q6KGM55qE5aSp5L2T5p6E5oiQ77yM5YW25Lit5YyF5ous5YWr5aSn6KGM5pif44CC6L-Z5Lqb6KGM5pif5LiO5aSq6Ziz55qE6Led56a777yM5LuO6L-R5Yiw6L-c5L6d5qyh5piv77ya5rC05pif44CB6YeR5pif44CB5Zyw55CD44CB54Gr5pif44CB5pyo5pif44CB5Zyf5pif44CB5aSp546L5pif44CB5rW3546L5pif44CCContoh respons
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Thu, 10 Aug 2023 11:09:00 GMT
Content-Type: application/json;charset=UTF-8
Connection: close
Vary: Accept-Encoding
x-oss-request-id: 6597C1C04479D830303AF61D
x-oss-server-time: 2010
Content-Encoding: gzip
{
"RequestId":"6597C1C04479D830303AF61D",
"Output":{
"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus.",
"FinishReason":"stop"
}
}Mode SSE
Mode ini mengembalikan hasil terjemahan dalam segmen sebagai aliran.
Contoh permintaan
File untuk diproses: example.doc
Teks untuk diterjemahkan: "Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet. Dari yang terdekat hingga yang terjauh dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus."
Bahasa target: en_US
Format respons: event-stream
POST /example.doc?x-oss-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-process=doc/translate,language_en_US,format_event-stream,content_5aSq6Ziz57O755Sx5aSq6Ziz5Lul5Y-K546v57uV5YW26L-Q6KGM55qE5aSp5L2T5p6E5oiQ77yM5YW25Lit5YyF5ous5YWr5aSn6KGM5pif44CC6L-Z5Lqb6KGM5pif5LiO5aSq6Ziz55qE6Led56a777yM5LuO6L-R5Yiw6L-c5L6d5qyh5piv77ya5rC05pif44CB6YeR5pif44CB5Zyw55CD44CB54Gr5pif44CB5pyo5pif44CB5Zyf5pif44CB5aSp546L5pif44CB5rW3546L5pif44CCContoh respons
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Thu, 10 Aug 2023 11:20:11 GMT
Content-Type: text/event-stream;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
x-oss-request-id: 6597C2174479D83837AE0C1E
x-oss-server-time: 587
id: 0
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"The","FinishReason":"null"}}
id: 1
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari","FinishReason":"null"}}
id: 2
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan","FinishReason":"null"}}
id: 3
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya","FinishReason":"null"}}
id: 4
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama.","FinishReason":"null"}}
id: 5
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari","FinishReason":"null"}}
id: 6
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari","FinishReason":"null"}}
id: 7
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah:","FinishReason":"null"}}
id: 8
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi,","FinishReason":"null"}}
id: 9
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"","FinishReason":"null"}}
id: 10
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus","FinishReason":"null"}}
id: 11
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus","FinishReason":"null"}}
id: 12
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus.","FinishReason":"null"}}
id: 13
event: Result
data: {"RequestId":"6597C2174479D83837AE0C1E","Output":{"Text":"Tata surya terdiri dari Matahari dan benda-benda langit yang mengorbitnya, termasuk delapan planet utama. Secara berurutan dari jarak terdekat dari Matahari, planet-planet ini adalah: Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, dan Neptunus.","FinishReason":"stop"}}
Kuota dan batasan
Fitur penerjemahan dokumen cerdas hanya mendukung pemrosesan sinkron menggunakan parameter x-oss-process.
Permintaan harus dikirim menggunakan metode POST.
Akses anonim tidak didukung. Semua permintaan harus ditandatangani dan diotorisasi.