您可以使用 ML Kit 辨識文字字串的語言。您可以取得字串最可能的語言,以及所有字串可能語言的可信度分數。
ML Kit 可透過原生指令碼辨識超過 100 種語言的文字。此外,系統可辨識阿拉伯文、保加利亞文、中文、希臘文、北印度文、日文和俄文,請參閱完整清單,瞭解支援的語言與指令碼。
組合 | 未分類 | |
---|---|---|
程式庫名稱 | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
導入方法 | 模型會在建構期間以靜態方式連結至應用程式。 | 模型會透過 Google Play 服務動態下載。 |
應用程式大小影響 | 大小增加約 900 KB。 | 大小增加約 200 KB。 |
初始化時間 | 模型可立即使用。 | 可能要等到模型下載完畢再開始使用。 |
馬上試試
- 您可以試用範例應用程式,查看這個 API 的使用範例。
事前準備
在專案層級的
build.gradle
檔案中,請務必在buildscript
和allprojects
區段中納入 Google 的 Maven 存放區。將 ML Kit Android 程式庫的依附元件,新增至模組的應用程式層級 Gradle 檔案,通常為
app/build.gradle
。請根據您的需求選擇下列其中一種依附元件:將模型與應用程式搭配使用:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.5' }
在 Google Play 服務中使用模型的步驟如下:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
如果您選擇在 Google Play 服務中使用模型,可以設定讓應用程式在從 Play 商店安裝應用程式後,自動將模型下載至裝置。如要這麼做,請在應用程式的
AndroidManifest.xml
檔案中新增下列宣告:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
您也可以明確檢查模型可用性,並透過 Google Play 服務 ModuleInstallClient API 要求下載。
如果您未啟用安裝期間模型下載功能,或要求明確下載,系統會在首次執行 ID 時下載模型。下載完成前發出的要求不會產生任何結果。
辨別字串的語言
如要找出字串的語言,請呼叫 LanguageIdentification.getClient()
取得 LanguageIdentifier
的例項,然後將字串傳遞至 LanguageIdentifier
的 identifyLanguage()
方法。
例如:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
如果呼叫成功,系統會將 BCP-47 語言代碼傳遞至成功事件監聽器,指出文字的語言。如果沒有信心地偵測到語言,系統會傳遞 und
(未確定) 程式碼。
根據預設,ML Kit 只有在識別可信度值至少為 0.5 的語言時,才會傳回 und
以外的值。如要變更這個門檻,請將 LanguageIdentificationOptions
物件傳遞至 getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
取得字串的可能語言
如要針對字串最有可能使用的語言取得信心值,請取得 LanguageIdentifier
的例項,然後將字串傳遞至 identifyPossibleLanguages()
方法。
例如:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); float confidence = identifiedLanguage.getConfidence(); Log.i(TAG, language + " (" + confidence + ")"); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
如果呼叫成功,IdentifiedLanguage
物件清單會傳遞給成功事件監聽器。透過每個物件,您可以取得語言的 BCP-47 程式碼,以及字串以該語言編寫的信心。請注意,這些值代表整個字串以指定語言表示,ML Kit 不會在單一字串中識別多種語言。
根據預設,ML Kit 只會傳回可信度值至少為 0.01 的語言。如要變更這個門檻,請將 LanguageIdentificationOptions
物件傳遞至 getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
如果沒有語言符合此門檻,清單就會有一個項目,值為 und
。