Blue Prism × AI Microsoft Intelligent Services packageを試す。

お久しぶりです。渡部です。
1月が終わり、BluePrismを利用しているお客様や新規のお客様から来年度の事業計画のアドバイス・策定補助を頼まれることが多くなりました。
そこで、RPAの次といえば、AIやOCRなどの展開が考えられますが、そこで以前から気になっていた、「Blue Prism Microsoft Intelligent Services package」を使ってみたのでその報告です。

Microsoft Intelligent Services packageとは

https://portal.blueprism.com/documents/standard?title=Microsoft+Intelligent+Services&category=All&lang=All

このMicrosoft Intelligent Servicesパッケージ(v1.1)には、Microsoft Intelligent Services APIとの統合をサポートするドキュメントとBlue Prismリリースファイルが含まれており、
テキスト分析、コンピュータービジョン、翻訳などの事前定義された人工知能機能を使用できます。

具体的にはMicrosoft Azureの以下のサービスを利用することができます。

  • Computer Vision(イメージのコンテンツを分析するAIサービス)
  • Text Analytics(テキストからセンチメント、キー フレーズ、名前付きエンティティ、言語を検出)
  • Translator(シンプルな REST API 呼び出しでリアルタイムのテキスト翻訳を簡単に実行)

とりあえず、「MICROSOFT INTELLIGENT SERVICES (V6.2)」をクリックすると「Microsoft Intelligent Services_0.zip」がダウンロードできるので保存しておきます。
「Microsoft Intelligent Services_0.zip」を展開すると、以下の2ファイルができます。

Microsoft Intelligent Services V1.1.bprelease(リリースファイル)
v6 User Guide - Microsoft Intelligent Services.pdf(ユーザーガイド)

基本環境設定

とりあえずユーザーガイドに従って、環境を準備していきます。

Cognitive Servicesの申し込み

https://azure.microsoft.com/ja-jp/services/cognitive-services/
から申し込みます。今回利用する3サービスは12ヶ月間無料でトライアルできるのでちょうどいいですね。

必要なのはKey1とエンドポイントの値です。

  • Key1:ac11c3911dab4aecb02804f5a15bb010
  • エンドポイント:https://japaneast.api.cognitive.microsoft.com/

※記事公開後にkey1は再生成しているので、上記は無効です。

パッケージのインストール

このリリースファイルをインポートすると以下の1つのプロセスと4つのビジネスオブジェクトが生成されます。

認証情報の設定

以下の3つの認証情報を追加します。
・Microsoft Cognitive - Computer Vision
・Microsoft Cognitive - Text Analytics
・Microsoft Cognitive - Translator

設定内容は3つとも同じで、追加プロパティに「api_key」名で値を先ほどのKey1の値を入れます。
※「アクセス権」はとりあえず検証なので、全部にチェックを付ければOK。

追加環境設定・バグ修正

ここまではユーザーガイドに従ったものですが、ここからは実際の利用に沿った変更をしていきます。

APIエンドポイントの変更

上記Cognitive Servicesの申し込み時に「東日本」リージョンを選んでいるので、それに合わせてエンドポイントを以下のように変更します(上の値を下の値に変更)。

・Microsoft Cognitive - Computer Vision

https://northeurope.api.cognitive.microsoft.com/vision/v1.0/ocr
https://japaneast.api.cognitive.microsoft.com/vision/v1.0/ocr

・Microsoft Cognitive - Text Analytics

https://northeurope.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment
https://japaneast.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment

https://northeurope.api.cognitive.microsoft.com/text/analytics/v2.0/languages
https://japaneast.api.cognitive.microsoft.com/text/analytics/v2.0/languages

・Microsoft Cognitive - Translator

https://api.cognitive.microsoft.com/sts/v1.0/issueToken
https://japaneast.api.cognitive.microsoft.com/sts/v1.0/issueToken

バグ修正

・Microsoft Cognitive - Translator

オブジェクトの「Key Phrases」ページの「Format Key Phrases」にバグがあるので、Debug以下7行をとりあえず追加する。


「table.Rows.Add(sentenceSplit)」の部分が良くなくて、最初のAddの時に列数が決まってしまい、その列数以上のデータを次にAddしたときに、エラーになってしまう。
そのため、とりあえず列数を7列まで最初に拡張してあげています。(根本的なバグ修正ではない)

さらに言えば、table.Rows(y).Item(x).tostringの値を入れている箇所も良くない(Catchで空を入れていて入れたいものが握りつぶされている)が、今回は放置します。。。。

Dim table As New DataTable()
Dim i As Integer = 0

While i < Column_Count - 1

	table.Columns.Add("Sentence " & i + 1, GetType(String))
	i += 1
End While

Dim phraseSplit As String() = Key_Phrases.Split(New String() {"^%^"}, StringSplitOptions.None)

Dim column As Integer = 0

' Debug 
table.Columns.Add("col1")
table.Columns.Add("col2")
table.Columns.Add("col3")
table.Columns.Add("col4")
table.Columns.Add("col5")
table.Columns.Add("col6")
table.Columns.Add("col7")

For Each phrase as String in phraseSplit

	Dim sentenceSplit As String() = phrase.Split(New String() {","}, StringSplitOptions.None)
 
	table.Rows.Add(sentenceSplit)
	column+=1
Next

' Transpose the tableDim dtnew As New DataTable
Dim dtnew As New DataTable

Try
	For x As Integer = 0 To table.Rows.Count - 1
		dtnew.Columns.Add(x.ToString)
	Next

	For x As Integer = 0 To table.Columns.Count - 1
		Dim dr As DataRow = dtnew.NewRow
		dtnew.Rows.Add(dr)
	Next

	For x As Integer = 0 To table.Rows.Count - 1
		For y As Integer = 0 To table.Columns.Count - 1

			Try
				dtnew.Rows(x).item(y) = _
				table.Rows(y).Item(x).tostring

			Catch
				dtnew.Rows(x).item(y) =""
			End Try
		Next
	Next

	' Rename column names
	For x As Integer = 0 To dtnew.Rows.Count - 1
		dtnew.Columns(x).ColumnName = "Sentence " & (x + 1).tostring
	Next

Catch

End Try

Phrase_Collection = dtnew

 

OCR用パス変更

「Example: Microsoft Cognitive Services」プロセスの「Computer Vision Test」ページの「OCR」アクションでOCR対象のファイルパスが開発者(John Brownさん?)のパスになっているので、自分のテストで利用したい画像パスに変更します。


今回はMicrosoft OCR(Windows.Media.Ocr)は優秀だよというお話で利用した「給与所得の源泉徴収票」を指定しました。

実行結果

今回はMicrosoft Intelligent Services packageの評価なので、Azure側の評価はしませんが、結果を置いておきます。

Computer Vision

給与所得の源泉徴収票平成30年分(受給者番号)住所又は居所支をる払け者(個人番号)受(役職名)(フリガナ)名種別乂払金額給与所得控除後の金額所得控除の額の合計額源泉徴収税額0控除対象扶養親族の数障害者の数16歳未満(源泉)控除対象配偶配偶者(特別)非居住者(配偶者を除く)(本人除く)扶養親族である控除の額者の有無等老人の数特別その他親族の数特定その他有従有人従人人従人人従人人人人0社会保険料等の金額生命保険料の控除額地震保険料の控除額住宅借人金等特別搾除の額内円円円円00(摘要)生命保険料新生命保険料円旧生命保険料円円円旧個人年金介護医療保新個人年金の金額のの金衵の金額険料の金額保険料の金額保険料の金内訳住宅借人金等居住開始年月日住宅借人金等特別住宅借人金等円住宅借入金特別搾除適用数(1回目)控除区分(1回ロ)年未残高(回団等特別控除の額の内訳住宅借人金等円居住閒始年月日住宅借人金等特別住宅借人金等特別控除可能額(2回「l)搾除区分(2回目)年末残高(2回目)(フリガナ)円円円(源泉・特別)分控除対象氏名配合者所国民年金保険の得旧長期損害料等の金額保険料の金額配偶者個人番号(フリガナ)(フリガナ)区分個人番号個人番号(フリガナ)(フリガナ)区分分除2氏名2氏名対個人番号個人番号象の(フリガナ)扶(フリガナ)区区分親3氏名族個人番号個人番号(フリガナ)(フリガナ)区分区分4氏名4氏名個人番号個人番号未外死災乙本人が障害者寡婦寡勤中途就・退職受給者生年月成国亡労年人退者の者生就職退職年月明大昭平年夫日月ロ他般別個人番号又は法人番号住所(居所)払又は所在地氏名又は名称用

Text Analytics

(バグに起因すると思うので記載なし)

Translator

「This text is needed to be translated, cheers.」
 ↓
「このテキストは、歓声を翻訳する必要があります。」

まとめ

Text Analyticsが使えなかったのは残念ですが、AzureのOCRや翻訳機能が簡単に利用できるのはいいですね。
PDFファイルを画像化して、OCRをかけて、抽出した文字列で仕分けする機能ぐらいは簡単に作れそうですね。
※Windows.Media.Ocrを利用したものは既にPowerShellで作ったことがあるので。

個人的には、APIKeyを利用したサービス呼び出しに関わるテクニックがまとまっているので、横展開するのも簡単にできそうです。

さて、これを利用して、来年度はお客さんの業務とBluePrism×AIでなんか成果発表できればうれしいです。

検証楽しくて、仕事進んでない。。。

もっと知りたい方はこちら

ページトップ