構造化処理を構築する
RDE構造化処理は、大きく分けて、以下の3つのフェーズに分けられます。
graph LR
起動処理 --> カスタム構造化処理
カスタム構造化処理 --> 終了処理
起動処理、終了処理は、rdetoolkitを使うことで簡単に実行できます。そのため、ユーザー自身は、ご自身のデータに対する処理を実行するカスタム構造化処理
を定義するだけです。
RDEToolKitがサポートする処理
- 起動モードの自動判定
- 入力データを指定したディレクトリに保存する
- Main画像をサムネイル画像に保存する
- magic variableの適用
- invoice.schema.json, invoice.json等のバリデーション
- metadata-def.jsonからデータセットタイルの説明欄自動生成
起動処理
起動処理では、カスタム構造化処理を実行する前の処理を実行します。
Reference
API Documents: rdetoolkit.workflows.run
実装例
実装は、プログラムのエントリーポイントとなるファイルに実装することを推奨します。例えば、main.py
やrun.py
というファイルを作成し、以下のように実装します。
1 2 3 4 5 |
|
具体的な処理について
起動処理は、次の処理を実行します。
- RDE構造化処理で必要なディレクトリの自動作成
- 入力ファイルを
raw
ディレクトリへ自動保存 - 入力ファイル・設定ファイルの内容から、各種モードに応じた読み込み処理
- 読み込んだファイルを、独自で定義したカスタム構造化処理に渡し実行
各種モードごとのファイル読み込みでは、ファイルの内容を読み込んでいません。そのため、ファイルに対する具体的な処理は、カスタム構造化処理等で定義してください。
graph TD
init1[起動処理] --> init2[ディレクトリ作成]
init2-->init3{モード選択}
init3-->|default|init6[invoiceモード]
init3-->init7[Excelinvoiceモード]
init3-->init8[マルチデータタイル]
init3-->init9[RDEフォーマットモード]
init6-->init10[カスタム構造化処理]
init7-->init10
init8-->init10
init9-->init10
init10 --> init11[入力データのrawフォルダに追加]
init11 --> init12[[ユーザー定義の構造化処理実行]]
init12 --> init13[サムネイル画像の自動保存]
init13 --> init14[magic variable]
init14 --> init15[終了]
カスタム用構造化処理関数の作成
rdetoolkitでは、独自の処理をRDEの構造化処理のフローに組み込み込むことが可能です。独自の構造化処理は、入力データに対してデータ加工・グラフ化・機械学習用のcsvファイルの作成など、データセット固有の処理を定義することで、RDEへ柔軟にデータを登録可能です。
実装例
ここでは、rdetoolkitへ渡す独自データセット関数を、dataset()
とします。dataset()
は、以下の2つの引数を渡してください。
Tip
独自のクラス・関数群を定義する場合、必ずRdeInputDirPaths
, RdeOutputResourcePath
を引数で受け取り可能な関数でwrapしてください。
1 2 3 4 |
|
これの引数には、構造化するために必要な各種ディレクトリ情報やファイル情報が格納されています。特に、RdeOutputResourcePath
には、ファイル保存先情報が格納されています。構造化処理内で上記のディレクトリ・ファイルパスを取得する方法は、構造化ディレクトリパスの取得を参照してください。
- srcpaths (RdeInputDirPaths): 入力されたリソースファイルのパス情報
- resource_paths (RdeOutputResourcePath): 処理結果を保存するための出力リソースパス情報
Reference
- API Documentation: RdeInputDirPaths - rde2types
- API Documentation: RdeOutputResourcePath - rde2types
今回の例では、modules
以下に、display_messsage()
, custom_graph()
, custom_extract_metadata()
というダミー処理を定義し、独自の構造化処理を定義します。これらの関数は、modules/process.py
というファイルを作成し定義します。以下の2つの引数を渡す関数でなければ、rdetoolkitは正しく処理が実行できません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
起動処理へ組み込む
このdataset()
を起動するためには、先ほどの起動処理で作成したエントリーポイントとなるファイル(main.py
など)に以下のように定義します。
1 2 3 4 5 |
|
result
には、構造化処理の実行ステータスが格納されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
失敗した時のresult
の出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
終了処理について
続いて、rdetoolkit.workflow.run()
が実行する終了処理について説明します。
- 生成ファイル、入力ファイルのバリデーション
- Main画像から代表画像の自動保存
- データタイル説明欄へ指定メタデータの自動記述
graph TD
end1[カスタム構造化処理] --> end2[バリデーション]
end2 --> end3{設定:save_thumbnail_image}
end3 -->|False|end6[説明欄の自動記述]
end3-->|True|end5[Main画像からサムネイル画像保存]
end5 --> end6
end6 --> end7[終了]
各種ファイルのバリデーション
バリデーションは、次のファイルが対象となります。これらのファイルは、データセット開設時、データ登録時に重要なファイルとなります。
tasksupport/metadata-def.json
tasksupport/invoice.shcema.json
data/invoice/invoice.json
Documents
説明欄への自動転記
以下のドキュメントを参照してください。