質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

1808閲覧

docomo画像認識apiについて

ths

総合スコア21

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/05/17 23:52

編集2022/01/12 10:55

pythonでdocomoの画像認識apiを使用したいと思い、リクエストを投げるのですが、エラーが返ってきます。
requests.postメソッドには何が必要なのでしょうか。
公式サイトやその他の解説サイトを見ても通りません。

【コードを書き直したのですが、新たなエラーが出ました。】

Traceback (most recent call last): File "image_recognition.py", line 46, in <module> candidate_list = getImageCategory(fname, model_name) File "image_recognition.py", line 29, in getImageCategory data = result.json() File "C:\Users\user\AppData\Local\Continuum\anaconda3\envs\opencv\lib\site-packages\requests\models.py", line 850, in json return complexjson.loads(self.text, **kwargs) File "C:\Users\user\AppData\Local\Continuum\anaconda3\envs\opencv\lib\json\__init__.py", line 354, in loads return _default_decoder.decode(s) File "C:\Users\user\AppData\Local\Continuum\anaconda3\envs\opencv\lib\json\decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users\user\AppData\Local\Continuum\anaconda3\envs\opencv\lib\json\decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
#画像データを投げて、カテゴリの候補上位5つを取得 (カテゴリ認識) def getImageCategory(fname, modelName="food"): APIKEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' url = 'https://api.apigw.smt.docomo.ne.jp/imageRecognition/v1/concept/classify/' params = {'APIKEY': APIKEY, 'image': img, 'modelName': modelName} headers = {'Content-Type': 'multipart/form-data'} result = requests.post( url = url, params = params, headers = headers, ) data = result.json() print(data)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

試してみたところ、こんな感じでいけました。

'image' の 3つ目の要素(Contents-Type)の 'image/jpeg' はファイルに合わせて修正してください

Python

1import requests 2import os 3 4#画像データを投げて、カテゴリの候補上位5つを取得 (カテゴリ認識) 5def getImageCategory(fname, modelName="food"): 6 7 APIKEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 8 9 url = 'https://api.apigw.smt.docomo.ne.jp/imageRecognition/v1/concept/classify/' 10 params = {'APIKEY': APIKEY} 11 12 with open(fname, 'br') as f: 13 data = f.read() 14 15 files = { 16 'modelName': (None, modelName, 'text/plain; charset=utf-8'), 17 'image': (os.path.basename(fname), data, 'image/jpeg') 18 } 19 20 result = requests.post( 21 url = url, 22 params = params, 23 files = files 24 ) 25 data = result.json() 26 print(data)

投稿2018/05/18 03:00

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ths

2018/05/18 05:23

回答ありがとうございます。 返信が遅くなり申し訳ございません。 一度試したところ、jsonを受け取ることができました。
guest

0

API共通リファレンス - 画像認識APIには、リクエストボディ(multipart/form-data形式) で、modelName と image を送る必要があるようですが、POSTしたデータに modelName は、ありますか?

モデル名一覧

投稿2018/05/18 00:07

編集2018/05/18 00:17
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ths

2018/05/18 00:27

コードを編集し url = 'https://api.apigw.smt.docomo.ne.jp/imageRecognition/v1/concept/classify/' params = {'APIKEY': APIKEY, 'image': img, 'modelName': modelName} headers = {'Content-Type': 'multipart/form-data'} result = requests.post( url = url, params = params, headers = headers, ) data = result.json() print(data) としたのですが、次は json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) と出ました。 jsonデータに問題があるということでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問