Japanese (日本語) - Change language
自動処理の例
この例では、銀行口座アプリケーションをサーバーにアップロードする方法、また顧客データをキャプチャする方法を示します。
プロジェクトと添付資料をダウンロードします: Unattended.zip
コード例は以下のステップで実行します:
- サービスへ接続する
- セッションを開く
- プロジェクトを開く
- 新しいバッチを作成する
- 画像をバッチに追加する
- バッチ処理を開始する
- 結果を取得し、キャプチャしたデータを表示する
- セッションを閉じる
この例で処理するには:
- UnattendedExample.fcproj プロジェクトファイルをサーバーにアップロードします。
- Visual Studio 2013 以降のバージョンで、UnattendedExample.sln を開きます。
サービスへの接続
// ウェブサービスクライアントのインスタンスを作成 var service = new FlexiCapture.FlexiCaptureWebServiceSoapClient(); // ======= 基本認証 ======= // service.ClientCredentials.UserName.UserName = "username"; // service.ClientCredentials.UserName.Password = "password";
セッションを開く
// バッチを不正アクセスから守るため、現在のユーザーを指定します // まず、ユーザー名をシステムに見えるようにします var username = service.GetCurrentUserIdentity(); // 次に、 FlexiCapture ユーザーの中から自分を探します var userId = service.FindUser(username.Name); if (userId <= 0) throw new Exception("現在のユーザーは見つかりません"); // 新しい処理セッションを開きます const int roleType = 12;//ユーザーのステーションのオペレータロール const int stationType = 10;//ユーザーのステーション var sessionId = service.OpenSession(roleType, stationType); if (sessionId <= 0) throw new Exception("セッションを開けません");
プロジェクトを開く
// プロジェクトを入手 var projects = service.GetProjects(); var projectGuid = ""; if (projects != null && projects.Count > 0) { foreach (var project in projects) { if (project.Name != "UnattendedExample") continue; projectGuid = project.Guid; break; } } if (string.IsNullOrEmpty(projectGuid)) { throw new Exception("UnattendedExample projectを見つけられません。このプロジェクトがこの例にしたがって作動するよう、サーバーにアップロードしなければなりません。"); } // UnattendedExample という名前の最初のプロジェクトを開きます。 var projectId = service.OpenProject(sessionId, projectGuid); if (projectId <= 0) throw new Exception("プロジェクトを開けません");
新しいバッチの作成
// 新しいバッチの名前を指定し、その他のプロパティは変更しないでください var batch = new FlexiCapture.Batch{Name="サンプル API バッチ"}; var batchId = service.AddNewBatch(sessionId, projectId, batch, userId); if (batchId <= 0) throw new Exception("バッチを作成できませんでした");
画像をバッチに追加
// 画像を追加するバッチを開きます
service.OpenBatch(sessionId,batchId);
256 KB 以下のファイルのアップロード
service.AddNewImage(sessionId, batchId, new FlexiCapture.File()
{
Bytes = File.ReadAllBytes(filename),
Name = filename
});
大きなファイルのアップロード
Base64 で合計 256 KB 以上のファイルをアップロードするには、以下の難点があります:
- ネットワークの読み込みが33%増加します
- とても大きなリクエストは、IIS またはファイアウォールでブロックされます
- 接続が失われた場合、またはネットワークエラーが生じた場合、ファイルを再送信する必要があります
ファイルサービス API 経由でファイルをアップロードする方が、より効率的です。
var doc = new FlexiCapture.Document { BatchId = batchId }; var file = new FlexiCapture.File { Name = filename }; var documentId = service.AddNewDocument(sessionId, doc, file, false, 0); UploadFile(service, sessionId, projectId, batchId, documentId, filename).Wait();
ファイルをサーバーにアップロード
ファイル本体と一緒にサーバーへリクエストを送信します
ファイル本体は別にして、サーバーへリクエストを送信します
バッチ処理の開始と終了
// バッチ処理を開始します service.ProcessBatch(sessionId,batchId); Console.WriteLine("作成されたタスクの認識を待っています"); // 処理が完了するのを待ちます var percentCompleted = 0; while (percentCompleted < 100) { Console.CursorLeft = 0; Console.Write(percentCompleted + "%"); percentCompleted = service.GetBatchPercentCompleted(batchId); System.Threading.Thread.Sleep(500); } Console.CursorLeft = 0; Console.WriteLine("完了...");
結果を取得し、キャプチャしたデータを表示しています
それぞれの文書から、3つのフィールドだけが表示されます:
- アドレス
- 名前
- 名字
// 結果を取得します var documents = service.GetDocuments(sessionId, batchId); if (documents == null) return; // XML 結果を解析するのに必要な XML 名 var docs = XName.Get("Documents", "http://www.abbyy.com/FlexiCapture/Schemas/Export/FormData.xsd"); var banking = XName.Get("_Banking_eng", "http://www.abbyy.com/FlexiCapture/Schemas/Export/Banking_eng.xsd"); // すべての結果を反復し、スクリーンに表示します foreach (var document in documents) { if (document.Id == 0) continue; // XML ファイルを認識データと一緒に入手します var attachedFile = service.LoadDocumentResult(sessionId, batchId, document.Id, "Result.xml"); if (attachedFile.Bytes == null) continue; // 結果を XML で開きます var xml = XDocument.Load(new MemoryStream(attachedFile.Bytes)); var docsElement = xml.Element(docs);// 認識データのコンテナ if (docsElement == null) continue; var result = docsElement.Element(banking); if (result == null) continue; // 必要なデータを入手します var addressing = result.Element("_Addressing"); var surname = result.Element("_Last_Name"); var name = result.Element("_First_Name"); // データを表示します Console.WriteLine("- "+ Console.WriteLine("- " + (addressing == null ? "" : addressing.Value) + " " + (name == null ? "" : name.Value) + " " + (surname == null ? "" : surname.Value) ); }
セッションを閉じています
service.DeleteBatch(sessionId,batchId); service.CloseProject(sessionId,projectId); service.CloseSession(sessionId);
2/20/2021 12:32:42 PM