PDF内の画像を一覧化:ページ・番号・幅・高さ
PDF画像の入れ子になったメタデータを、確認・絞り込み・保存がしやすい明瞭な一覧へ変換します。各ページについて、ページ番号と画像ごとのピクセル寸法を含む記述子をご指定ください。元の順序を保った1つの平坦なリストが返り、画像番号はページごとに1から始まります。PDF解析器が埋め込み画像を検出した後、監査、選択、抽出、レポート作成などの処理へ渡す前に役立ちます。
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
ページごとの画像記述子を準備します
PDFリーダーや抽出処理が生成したメタデータをご用意ください。入力はページの配列で、各要素には正のページ番号と画像の配列が必要です。各画像には、ピクセル単位の幅と高さを正の整数で指定します。解析器が返した画像順を維持してください。その順序が結果の画像番号になり、ページごとに1から始まります。そのため、レポートでも「4ページ、画像2」のように分かりやすく参照できます。画像がないページには空の画像配列を指定できます。ページ番号は連続している必要がないため、対象ページだけをプレースホルダーなしで処理できますが、同じリクエスト内で重複してはいけません。この明示的な構造により、ページ情報の欠落で画像が誤った場所に関連付けられることを防げます。
平坦化された結果を確認します
レスポンスの画像配列には、指定した全ページで見つかった記述子ごとに1件のレコードが入ります。各レコードは、ページ、番号、幅、高さの4項目です。ページは親要素からコピーされ、番号はページ内の位置から計算されて、次のページでは再び1から始まります。幅と高さは検証後にそのままコピーされ、拡大縮小、丸め、回転、単位変換は行われません。レコードは入力されたページの順序と、各ページ内の画像順を維持します。この安定した走査により、繰り返し実行しても決定論的な結果となり、再並べ替えせずに一覧を比較できます。この機能はPDFを開いたり画像のバイナリーデータを抽出したりせず、解析済みの記述子を正規化します。同じ寸法でも別の画像資源や配置である可能性があるため、個別のレコードとして残ります。
一覧を検証して活用します
ページ単位の入れ子構造が扱いにくい場面で、平坦な一覧をご利用ください。品質検査では最低解像度を下回る画像を検出でき、抽出処理ではサムネイルより大きい画像だけを選択でき、監査レポートでは配列を何度も走査せずにページ別の画像数を集計できます。人が読める位置情報としてページと番号を一緒に保存してください。ただし、番号は入力順を示すもので、PDF内部のオブジェクトIDではありません。検証は厳格です。ページ配列がない場合や空の場合、ページ番号が無効または重複している場合、画像が配列でない場合、幅や高さが正の整数でない場合は失敗します。不完全なのに完全に見える一覧を返すより、安全にエラーとするためです。処理は決定論的で、ネットワークを使わず、記述子も保存しません。ブラウザーで実行するほか、1回$0.002でAPIをご利用いただけます。
活用例
画像解像度を監査する
解析器のメタデータを平坦化し、幅または高さが文書品質の基準を下回る画像を特定します。
選択的な抽出を計画する
ページと番号の一覧を作成し、大きな画像だけを後続処理で選び、小さな装飾画像を除外します。
PDF資源レポートを作成する
ページごとの入れ子になった結果を、表計算、データベース、処理ログ向けの単純な行へ変換します。
よくある質問
この機能はPDF自体を読み込んだりアップロードしたりしますか?
いいえ。PDF解析器がすでに生成したページごとの画像記述子を受け取ります。
画像番号はどのように付けられますか?
1から始まり、指定された順序に従い、ページが変わるたびに1へ戻ります。
画像がないページも指定できますか?
はい。空の画像配列を指定してください。そのページから結果レコードは追加されません。
ページ番号は連続している必要がありますか?
いいえ。選択したページだけを指定できますが、各番号は重複しない正の整数である必要があります。
APIリクエストの料金はいくらですか?
APIは1回$0.002です。対話的な作業にはブラウザー実行もご利用いただけます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/extract-images-list \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/extract-images-list", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/extract-images-list",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/extract-images-list", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/extract-images-list", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.extract_images_list",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_pages | 10000 |
max_images_per_page | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |