このトピックでは、.NET SDK のイメージ OCR インターフェイスを使用して、イメージ内のテキストを認識する方法について説明します。
機能説明
一般的な OCR は、一般的なイメージ内のテキストを認識することに加えて、構造化されたカード上のテキストも認識できます。パラメーターの詳細については、「イメージ OCR 検出 API」をご参照ください。
説明
この SDK はイメージ URL のみをサポートします。ローカルファイルやバイナリデータはサポートしていません。
サポートされている URL タイプは、長さが最大 2,048 文字のインターネット HTTP または HTTPS URL です。
前提条件
.NET 依存関係をインストールする必要があります。手順については、「.NET 依存関係のインストール」をご参照ください。
説明
「インストール」のトピックで説明されている必要な .NET バージョンを使用して、依存関係をインストールする必要があります。そうしないと、後続の操作の呼び出しが失敗します。
同期イメージ検出タスクの送信
操作 | 説明 | サポートされているリージョン |
ImageSyncScanRequest | scenes パラメーターを ocr に設定して同期 OCR タスクを送信し、イメージ内のテキストを認識します。 |
|
サンプルコード
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20180509;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
/**
* 環境変数を取得する一般的な方法:
* Resource Access Management (RAM) ユーザーの AccessKey ID を取得する: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAM ユーザーの AccessKey Secret を取得する: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"環境変数から RAM ユーザーの AccessKey ID を取得する",
"環境変数から RAM ユーザーの AccessKey Secret を取得する");
DefaultAcsClient client = new DefaultAcsClient(profile);
ImageSyncScanRequest request = new ImageSyncScanRequest();
request.AcceptFormat = FormatType.JSON;
request.ContentType = FormatType.JSON;
request.Method = MethodType.POST;
request.Encoding = "UTF-8";
Dictionary<string, object> task1 = new Dictionary<string, object>();
task1.Add("dataId", "検出するデータの ID");
//task1.Add("url", "検出するイメージの URL");
task1.Add("url", "http://example.com/xx.jpg");
// 例:ID カードの表面を認識します。
Dictionary<string, object> cardExtras = new Dictionary<string, object>();
cardExtras.Add("card", "id-card-front");
Dictionary<string, object> httpBody = new Dictionary<string, object>();
// scenes:検出シナリオ。
httpBody.Add("scenes", new List<string> { "ocr" });
httpBody.Add("bizType", "ビジネスシナリオ");
httpBody.Add("extras", cardExtras);
httpBody.Add("tasks", new List<Dictionary<string, object>> { task1 });
request.SetContent(System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(httpBody)), "utf-8", FormatType.JSON);
try
{
ImageSyncScanResponse response = client.GetAcsResponse(request);
if (response.HttpResponse.Status != 200)
{
Console.WriteLine("リクエストは失敗しました。ステータス:{0}", response.HttpResponse.Status);
}
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("エラー情報で失敗しました: {0}", ex.Message);
}
}
}
}