Skip to main content

annofab-api-python-client

Annofab Web API のPythonクライアントライブラリです。

Build Status CodeQL PyPI version Python Versions Documentation Status

注意

  • 作者または著作権者は、ソフトウェアに関してなんら責任を負いません。
  • 現在、APIは開発途上版です。予告なく互換性のない変更がある可能性をご了承ください。
  • put, post, delete系のメソッドを間違えて実行してしまわないよう、注意してください。特に「プロジェクト削除」や「アノテーション仕様更新」のAPIには十分注意してください。

廃止予定

現在ありません。

Features

cURLやPostmanなどよりも簡単にAnnofab Web APIにアクセスできます。

  • ログインを意識せずに、APIを利用できます。
  • アクセス過多などで失敗した場合は、リトライされます。
  • 「画像を入力データとして登録する」機能など、APIを組み合わせた機能も利用できます。

Requirements

  • Python 3.10+

Install

$ pip install annofabapi

https://pypi.org/project/annofabapi/

Usage

インスタンス生成

user_id, passwordをコンストラクタ引数に渡す場合

# APIアクセス用のインスタンスを生成
from annofabapi import build


user_id = "XXXXXX"
password = "YYYYYY"

service = build(user_id, password)

PersonalAccessTokenをコンストラクタ引数に渡す場合

# APIアクセス用のインスタンスを生成
from annofabapi import build


pat = "XXXXXX"

service = build(pat = pat)

.netrcに認証情報を記載する場合

.netrcファイルに、AnnofabのユーザIDとパスワードを記載します。

machine annofab.com
login annofab_user_id
password annofab_password
from annofabapi import build_from_netrc
service = build_from_netrc()

For Linux

  • パスは$HOME/.netrc
  • $ chmod 600 $HOME/.netrcでパーミッションを変更する

For Windows

  • パスは%USERPROFILE%\.netrc

環境変数に認証情報を設定する場合

  • IDとパスワードで認証する場合
    • 環境変数ANNOFAB_USER_IDANNOFAB_PASSWORDにユーザIDとパスワードを設定します。
  • パーソナルアクセストークンで認証する場合
    • 環境変数ANNOFAB_PATにトークンを設定します。
    • ANNOFAB_PATが設定されている場合、ANNOFAB_USER_IDANNOFAB_PASSWORDは無視されます。
from annofabapi import build_from_env
service = build_from_env()

.netrcまたは環境変数に認証情報を設定する場合

build() を実行すると、環境変数または .netrc ファイルから認証情報を読み込みます。

from annofabapi import build
service = build()

優先順位は以下の通りです。

  1. 環境変数
    1. ANNOFAB_PAT
    2. ANNOFAB_USER_ID及びANNOFAB_PASSWORD
  2. .netrc

service.apiのサンプルコード

project_id = "ZZZZZZ"
# `status`が`complete`のタスクを取得する
content, response = service.api.get_tasks(project_id, query_params={"status": "complete"})

print(type(content))
# <class 'dict'>
print(content)
# {'list': [{'project_id': 'ZZZZZZ', 'task_id': '20190317_2', 'phase': 'acceptance', ...

print(type(response))
# <class 'requests.models.Response'>
print(response.headers["Content-Type"])
# application/json

service.wrapperのサンプルコード

service.wrapperには、server.apiを組み合わせたメソッドが定義されています。

# `status`が`complete`のタスクすべてを取得する
tasks = service.wrapper.get_all_tasks(project_id, query_params={"status": "complete"})
print(type(tasks))
# <class 'list'>
print(tasks)
# [{'project_id': 'ZZZZZZ', 'task_id': '20190317_2', 'phase': 'acceptance', ...


# simpleアノテーションzipのダウンロード
service.wrapper.download_annotation_archive(project_id, 'output_dir')

# 画像ファイルを入力データとして登録する
service.wrapper.put_input_data_from_file(project_id, 'sample_input_data_id', f'sample.png')

アノテーションzipの読み込み

ダウンロードしたアノテーションzipを、JSONファイルごとに読み込みます。 zipファイルを展開したディレクトリも読み込み可能です。

import zipfile
from pathlib import Path
from annofabapi.parser import lazy_parse_simple_annotation_dir, lazy_parse_simple_annotation_zip, SimpleAnnotationZipParser, SimpleAnnotationDirParser, lazy_parse_simple_annotation_zip_by_task


# Simpleアノテーションzipの読み込み
iter_parser = lazy_parse_simple_annotation_zip(Path("simple-annotation.zip"))
for parser in iter_parser:
    simple_annotation = parser.parse()
    print(simple_annotation)

# Simpleアノテーションzipを展開したディレクトリの読み込み
iter_parser = lazy_parse_simple_annotation_dir(Path("simple-annotation-dir"))
for parser in iter_parser:
    simple_annotation = parser.parse()
    print(simple_annotation)

# Simpleアノテーションzipをタスク単位で読み込む
task_iter_parser = lazy_parse_simple_annotation_zip_by_task(Path("simple-annotation.zip"))
for task_parser in task_iter_parser:
    print(task_parser.task_id)
    for parser in task_parser.lazy_parse():
        simple_annotation = parser.parse()
        print(simple_annotation)
        

# Simpleアノテーションzip内の1個のJSONファイルを読み込み
with zipfile.ZipFile('simple-annotation.zip', 'r') as zip_file:
    parser = SimpleAnnotationZipParser(zip_file, "task01/12345678-abcd-1234-abcd-1234abcd5678.json")
    simple_annotation = parser.parse()
    print(simple_annotation)

# Simpleアノテーションzip内を展開したディレクトリ内の1個のJSONファイルを読み込み
parser = SimpleAnnotationDirParser(Path("task01/12345678-abcd-1234-abcd-1234abcd5678.json"))
simple_annotation = parser.parse()
print(simple_annotation)

塗りつぶし画像の読み込み

annofabapi.segmentation には、アノテーションZIPに格納されている塗りつぶし画像を扱うための関数が用意されています。 利用する場合は、以下のコマンドを実行してください。

$ pip install annofabapi[segmentation]

DataClass

annofabapi.dataclassに、データ構造用のクラスがあります。 これらのクラスを利用すれば、属性で各値にアクセスできます。

from annofabapi.dataclass.task import Task
dict_task, _ = service.api.get_task(project_id, task_id)
task = Task.from_dict(dict_task)

print(task.task_id)
print(task.status)

備考

annofabapiのログを出力する方法(サンプル)

import logging
logging_formatter = '%(levelname)-8s : %(asctime)s : %(name)s : %(message)s'
logging.basicConfig(format=logging_formatter)
logging.getLogger("annofabapi").setLevel(level=logging.DEBUG)

Release files for annofabapi 1.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for annofabapi 1.7.2
File Size Uploaded
annofabapi-1.7.2.tar.gz 536.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for annofabapi 1.7.2
File Interpreter ABI Platform
annofabapi-1.7.2-py3-none-any.whl Python 3 none any Details

Total release size:1.3 MB

Release files / annofabapi-1.7.2.tar.gz

Download URL annofabapi-1.7.2.tar.gz
Size 536.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f5e77ee7315ee69ac2c8a347ed849eddd9724d94c8d1479572a508c0676a1175
BLAKE2b-256 checksum
How to use checksums
ebc45a1c1f82207f8ad7c4f48bb289509b51d71cf151902bf9d5a64df530c577
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release files / annofabapi-1.7.2-py3-none-any.whl

Download URL annofabapi-1.7.2-py3-none-any.whl
Size 806.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77e81a43287ce4f7e78a0b051fc588902b996f93273a7a2d93fbcedbe4aa6f21
BLAKE2b-256 checksum
How to use checksums
9287fee21fb54531f6a42551dc7a82b5be089f654eddfe12e78d69c6a4014d73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release history Release notifications | RSS feed

2.1.0

2 release files

2.0.0

2 release files

This release

1.7.2 This release

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.9

2 release files

1.4.8

2 release files

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.74.1

2 release files

0.74.0

2 release files

0.73.1

2 release files

0.73.0

2 release files

0.72.3

2 release files

0.72.2

2 release files

0.71.1

2 release files

0.71.0

2 release files

0.68.0

2 release files

0.66.0

0.63.0

2 release files

0.62.1

2 release files

0.62.0

2 release files

0.60.3

2 release files

0.60.2

2 release files

0.60.1

2 release files

0.60.0

2 release files

0.59.0

2 release files

0.58.0

2 release files

0.57.0

2 release files

0.55.2

2 release files

0.55.1

2 release files

0.55.0

2 release files

0.54.0

2 release files

0.53.0

2 release files

0.51.1

2 release files

0.51.0

2 release files

0.50.2

2 release files

0.50.1

2 release files

0.49.0

2 release files

0.48.3

2 release files

0.48.2

2 release files

0.48.1

2 release files

0.48.0

2 release files

0.47.2

2 release files

0.47.1

2 release files

0.47.0

2 release files

0.46.5

2 release files

0.46.4

2 release files

0.46.3

2 release files

0.46.2

2 release files

0.45.1

2 release files

0.42.2

2 release files

0.42.1

2 release files

0.42.0

2 release files

0.41.2

2 release files

0.41.1

2 release files

0.41.0

2 release files

0.40.5

2 release files

0.40.4

2 release files

0.40.3

2 release files

0.40.2

2 release files

0.40.0

2 release files

0.39.0

2 release files

0.38.9

2 release files

0.38.5

2 release files

0.38.4

2 release files

0.37.0

2 release files

0.36.0

2 release files

0.34.0

2 release files

0.33.1

2 release files

0.33.0

2 release files

0.31.0

2 release files

0.30.3

2 release files

0.30.2

2 release files

0.30.1

2 release files

0.29.5

2 release files

0.29.4

2 release files

0.29.3

2 release files

0.29.2

2 release files

0.29.1

2 release files

0.29.0

2 release files

0.28.1

2 release files

0.28.0

2 release files

0.27.9

2 release files

0.27.8

2 release files

0.27.7

2 release files

0.27.6

2 release files

0.27.5

2 release files

0.27.4

2 release files

0.27.3

2 release files

0.27.2

2 release files

0.26.0

2 release files

0.25.2

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.3

2 release files

0.24.2

2 release files

0.23.2

2 release files

0.23.1

2 release files

0.21.4

2 release files

0.21.3

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.14.0

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.6

2 release files

0.11.5

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page