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列を追加します。

追加する生産量の列#

列名

内容

annotation_count

アノテーション数。区間以外のアノテーションも含みます。

video_duration_minute

動画の長さ(分)。

annotation_duration_minute

区間アノテーションの長さの合計(分)。重なる区間もそれぞれ加算します。

タスクのメタデータは 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で取得した教師付・検査・受入の作業時間の合計です。 フェーズ別作業時間や履歴由来のその他の項目も、指定した取得元のタスク履歴を使用します。

以下は動画プロジェクトの出力例です。

CSV出力例#

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_id

  • phase

  • phase_stage

  • status

  • user_id

  • account_id

  • no_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リクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。

アノテーションユーザ/オーナロールを持つユーザで実行してください。