task list_all_with_statistics#
Description#
全状態のタスクを対象に、タスク履歴に関する情報と生産量をまとめた一覧を出力します。 作業時間、担当者、アノテーション数、動画時間、区間アノテーションの長さを、タスクごとに比較できます。
statistics visualize と異なり、コメント・タスク履歴イベントの取得や、ユーザー別・日別の集計、グラフ生成は行いません。
アノテーション数をZIPから取得する場合、件数と区間長さは一度の走査で集計します。
ZIPの取得・解析にかかる時間は残るため、プロジェクトの規模によって処理時間が変わります。
Examples#
基本的な使い方#
annofabcli task list_all_with_statistics --project_id prj1 --output task.csv
JSONで出力する場合は --format pretty_json を指定します。
annofabcli task list_all_with_statistics --project_id prj1 --format pretty_json --output task.json
対象タスクを絞り込む#
デフォルトでは未着手・作業中も含めた全状態のタスクを出力します。
--task_query と --task_id で絞り込めます。
annofabcli task list_all_with_statistics --project_id prj1 \
--task_query '{"phase":"annotation","status":"working"}' --output task.csv
annofabcli task list_all_with_statistics --project_id prj1 \
--task_id file://task_ids.txt --output task.csv
タスク履歴全件ファイルが更新される前に確認する#
通常はタスク履歴全件ファイルから作業時間や初回担当者などを取得します。
全件ファイルが更新される前に作業時間を確認したい場合は、--get_task_histories_one_of_each を指定してください。
この場合、絞り込み後の各タスクの履歴をWebAPIで1件ずつ取得し、履歴全件ファイルは取得しません。
対象タスク数だけAPIを実行するため、処理時間が長くなります。
annofabcli task list_all_with_statistics --project_id prj1 \
--get_task_histories_one_of_each --latest --output task.csv
--latest は、タスク全件ファイル・アノテーションZIP・入力データ全件ファイルのうち使用するファイルを更新します。
タスク履歴全件ファイルは更新できません。履歴の最新化には上記のオプションが必要です。
また、履歴をAPIで取得しても、タスク状態やZIPの生産量は最新化されないため、それらも更新したい場合は --latest を併用してください。
ファイルの更新には数分から数十分かかる場合があり、各データの取得時点が完全に一致することも保証されません。
アノテーション数の取得元と集計対象ラベル#
--annotation_count_source の auto・zip・api は、
statistics visualize の「アノテーション数の取得元を指定する」と同じ動作です。
デフォルトの auto は、3Dインスタンスセグメントまたは3DセマンティックセグメントのラベルがあればAPI、それ以外はZIPを使用します。
APIの場合も、このコマンドで絞り込んだ全状態のタスクを集計します。
動画プロジェクトでは api 指定時も区間長さの集計用にZIPを取得します。
annofabcli task list_all_with_statistics --project_id prj1 \
--annotation_count_source zip --production_volume_include_label car person --output task.csv
--production_volume_include_label は指定したラベルだけを集計し、
--production_volume_exclude_label は指定したラベルを除外します。両者は同時に指定できません。
英語のラベル名を複数指定でき、file:// で改行区切りの一覧ファイルを1個だけ指定することもできます。
未指定なら全ラベルを集計します。
ラベル指定の適用先は annotation_count と annotation_duration_minute です。
作業時間・動画時間・入力データ数・対象タスクは変わりません。
したがって、ラベルを指定した場合も、作業時間はタスク全体の値です。
出力結果#
CSVは1タスク1行で、0件でも固定50列のヘッダーを出力します。
列は task list_added_task_history の47列を引き継ぎ、input_data_count の直後に以下の3列を追加します。
列名 |
内容 |
|---|---|
|
アノテーション数。区間以外のアノテーションも含みます。 |
|
動画の長さ(分)。 |
|
区間アノテーションの長さの合計(分)。重なる区間もそれぞれ加算します。 |
タスクのメタデータは metadata.{key} 列として辞書順で末尾に追加します。
JSONでは同じ固定50項目と metadata オブジェクトを出力します。
指定日以降の since_* 列や、生産量あたり作業時間の比率列は出力しません。
動画以外のプロジェクトでは、動画時間・区間長さは空欄(JSONでは null)です。
動画時間を取得できない場合や、ZIP内に対象タスクのJSONがない場合も、該当する生産量を空欄にします。
JSONが存在して集計対象アノテーションがない場合は、件数・区間長さを0にします。
APIから件数を取得する場合は、ZIP内のJSONの有無によらずAPIの件数を使用します。
worktime_hour は通常、タスク全件ファイルの合計作業時間です。
--get_task_histories_one_of_each 指定時は、APIで取得した教師付・検査・受入の作業時間の合計です。
フェーズ別作業時間や履歴由来のその他の項目も、指定した取得元のタスク履歴を使用します。
以下は動画プロジェクトの出力例です。
project_id |
task_id |
phase |
phase_stage |
status |
created_datetime |
started_datetime |
updated_datetime |
operation_updated_datetime |
account_id |
user_id |
username |
input_data_count |
annotation_count |
video_duration_minute |
annotation_duration_minute |
sampling |
worktime_hour |
annotation_worktime_hour |
inspection_worktime_hour |
acceptance_worktime_hour |
annotation_worktime_hour_by_user |
inspection_worktime_hour_by_user |
acceptance_worktime_hour_by_user |
annotation_worktime_hour_unknown_user |
inspection_worktime_hour_unknown_user |
acceptance_worktime_hour_unknown_user |
number_of_rejections_by_inspection |
number_of_rejections_by_acceptance |
first_inspection_reached_datetime |
first_acceptance_reached_datetime |
first_acceptance_completed_datetime |
completed_datetime |
inspection_is_skipped |
acceptance_is_skipped |
first_annotation_user_id |
first_annotation_username |
first_annotation_started_datetime |
first_annotation_worktime_hour |
first_inspection_user_id |
first_inspection_username |
first_inspection_started_datetime |
first_inspection_worktime_hour |
first_acceptance_user_id |
first_acceptance_username |
first_acceptance_started_datetime |
first_acceptance_worktime_hour |
post_rejection_annotation_worktime_hour |
post_rejection_inspection_worktime_hour |
post_rejection_acceptance_worktime_hour |
metadata.category |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
prj1 |
task1 |
annotation |
1 |
working |
2026-10-01T08:00:00+09:00 |
2026-10-01T09:00:00+09:00 |
2026-10-01T09:30:00+09:00 |
2026-10-01T09:00:00+09:00 |
account1 |
user1 |
作業者1 |
1 |
12 |
2.0 |
3.5 |
0.5 |
0.5 |
0.0 |
0.0 |
{"user1": 0.5} |
{} |
{} |
0.0 |
0.0 |
0.0 |
0 |
0 |
False |
False |
user1 |
作業者1 |
2026-10-01T09:00:00+09:00 |
0.5 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
sample |
[
{
"project_id": "prj1",
"task_id": "task1",
"phase": "annotation",
"phase_stage": 1,
"status": "working",
"created_datetime": "2026-10-01T08:00:00+09:00",
"started_datetime": "2026-10-01T09:00:00+09:00",
"updated_datetime": "2026-10-01T09:30:00+09:00",
"operation_updated_datetime": "2026-10-01T09:00:00+09:00",
"account_id": "account1",
"user_id": "user1",
"username": "作業者1",
"input_data_count": 1,
"annotation_count": 12,
"video_duration_minute": 2.0,
"annotation_duration_minute": 3.5,
"sampling": null,
"worktime_hour": 0.5,
"annotation_worktime_hour": 0.5,
"inspection_worktime_hour": 0.0,
"acceptance_worktime_hour": 0.0,
"number_of_rejections_by_inspection": 0,
"number_of_rejections_by_acceptance": 0,
"first_inspection_reached_datetime": null,
"first_acceptance_reached_datetime": null,
"first_acceptance_completed_datetime": null,
"completed_datetime": null,
"inspection_is_skipped": false,
"acceptance_is_skipped": false,
"first_annotation_user_id": "user1",
"first_annotation_username": "作業者1",
"first_annotation_started_datetime": "2026-10-01T09:00:00+09:00",
"first_annotation_worktime_hour": 0.5,
"first_inspection_user_id": null,
"first_inspection_username": null,
"first_inspection_started_datetime": null,
"first_inspection_worktime_hour": 0.0,
"first_acceptance_user_id": null,
"first_acceptance_username": null,
"first_acceptance_started_datetime": null,
"first_acceptance_worktime_hour": 0.0,
"post_rejection_annotation_worktime_hour": 0.0,
"post_rejection_inspection_worktime_hour": 0.0,
"post_rejection_acceptance_worktime_hour": 0.0,
"metadata": {
"category": "sample"
},
"annotation_worktime_hour_by_user": {
"user1": 0.5
},
"inspection_worktime_hour_by_user": {},
"acceptance_worktime_hour_by_user": {},
"annotation_worktime_hour_unknown_user": 0.0,
"inspection_worktime_hour_unknown_user": 0.0,
"acceptance_worktime_hour_unknown_user": 0.0
}
]
Usage Details#
全状態のタスクを対象に、履歴に関する情報と生産量をまとめた一覧を出力します。
usage: annofabcli task list_all_with_statistics [-h] [--yes]
[--endpoint_url ENDPOINT_URL]
[--annofab_user_id ANNOFAB_USER_ID]
[--annofab_password ANNOFAB_PASSWORD]
[--annofab_pat ANNOFAB_PAT]
[--logdir LOGDIR]
[--disable_log] [--debug]
-p PROJECT_ID
[-t TASK_ID [TASK_ID ...]]
[-tq TASK_QUERY] [--latest]
[--get_task_histories_one_of_each]
[--temp_dir TEMP_DIR]
[--annotation_count_source {auto,zip,api}]
[--production_volume_include_label PRODUCTION_VOLUME_INCLUDE_LABEL [PRODUCTION_VOLUME_INCLUDE_LABEL ...] |
--production_volume_exclude_label PRODUCTION_VOLUME_EXCLUDE_LABEL [PRODUCTION_VOLUME_EXCLUDE_LABEL ...]]
[-o OUTPUT]
[-f {csv,json,pretty_json}]
Named Arguments#
- -p, --project_id
対象のプロジェクトのproject_idを指定します。
- -t, --task_id
対象のタスクのtask_idを指定します。
file://を先頭に付けると、task_idの一覧が記載されたファイルを指定できます。ファイルを読み込む場合は、ファイル指定を1個だけ渡してください。直接指定するIDや別のファイル指定とは併用できません。- -tq, --task_query
タスクを絞り込むためのクエリ条件をJSON形式で指定します。
file://を先頭に付けると、JSON形式のファイルを指定できます。 以下のキーを指定できます。task_idphasephase_stagestatususer_idaccount_idno_user
- --latest
タスク・入力データ全件ファイルとアノテーションZIPのうち、使用するファイルを更新します。数分から数十分待つ場合があります。タスク履歴全件ファイルは更新されません。
- --get_task_histories_one_of_each
タスク履歴全件ファイルが更新される前に作業時間を確認したい場合に指定します。絞り込み後の各タスクの最新履歴をWebAPIで1件ずつ取得します。対象タスク数だけAPIを実行するため、処理時間が長くなります。
- --temp_dir
ダウンロードした全件ファイルとアノテーションZIPの保存先ディレクトリ。
- --annotation_count_source
Possible choices: auto, zip, api
アノテーション数の取得元。autoは3Dセグメントのラベルがあればapi、それ以外はzipを選びます。apiは一覧APIの総件数を使用します。動画ではapi指定時も区間長さの集計用にZIPを取得します。
Default:
'auto'- --production_volume_include_label
アノテーション数と区間長さの集計対象に含めるラベル名(英語)。複数指定できます。file://で改行区切りの一覧ファイルを1個だけ指定することもできます。作業時間・動画時間・入力データ数や対象タスクには影響しません。
- --production_volume_exclude_label
アノテーション数と区間長さの集計対象に除外するラベル名(英語)。複数指定できます。file://で改行区切りの一覧ファイルを1個だけ指定することもできます。作業時間・動画時間・入力データ数や対象タスクには影響しません。
- -o, --output
出力先のファイルパスを指定します。未指定の場合は、標準出力に出力されます。
- -f, --format
Possible choices: csv, json, pretty_json
出力フォーマットを指定します。
Default:
'csv'
common options (after the subcommand)#
- --yes
処理中に現れる問い合わせに対して、常に
yesと回答します。- --endpoint_url
Annofab WebAPIのエンドポイントを指定します。
- --annofab_user_id
Annofabにログインする際のユーザーID
- --annofab_password
Annofabにログインする際のパスワード
- --annofab_pat
Annofabにログインする際のパーソナルアクセストークン
- --logdir
ログファイルを保存するディレクトリを指定します。
Default:
.log- --disable_log
ログを無効にします。
- --debug
HTTPリクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。
アノテーションユーザ/オーナロールを持つユーザで実行してください。