OCRが必要なPDFページを判定
4ページを「文字・画像・文字・画像」と指定すると、2ページ目と4ページ目にOCRが必要で、1ページ目と3ページ目はすでに検索できると分かり、短い要約も付きます。必要なページだけを文字認識に回せます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
多くのPDFは、すでに選択可能なテキスト層を持つネイティブなデジタルページと、画面上では問題なく見えてもコピー・検索・索引ができないスキャン画像ページが混在しています。文書全体のOCRに予算を使う前、あるいは抽出可能なテキストを前提とするパイプラインへ送る前に、テキスト層がないページ番号の正確な一覧が必要です。本機能はその真偽マップ—抽出可能なテキストがあるページはtrue、画像のみはfalse—を受け取り、OCRが必要なページ、すでに検索可能なページ、件数、OCR比率、一行の要約を返します。空入力は拒否されるため、沈黙を成功と誤認しません。
テキスト層フラグの意味とページ単位OCRが重要な理由
PDFのページは文字のように見えるグリフを描画しつつ、下層にラスタ画像だけを保持していることがあります。実務上の対処はOCRですが、大規模な混在文書の全ページにOCRをかけると、すでにテキスト層がある半分では時間と費用が無駄になります。ここでの契約は意図的に狭いです。
各ページに抽出可能なテキストがあるかは、すでに分かっているか、軽いプローブで測定済みであることを前提とします。並べられた真偽フラグのリストを送ってください。trueはそのページが検索可能でOCR不要、falseは画像のみ(またはテキスト層なし)でOCR待ちにすべきことを意味します。
フラグは1ページ目から文書順に解釈されます。
活用例
選択的OCRの作業リスト
ページごとのテキスト層プローブを、まだOCRが必要なページの1始まり一覧に変え、バッチが検索可能なページを飛ばせるようにします。
アクセシビリティ改修チケット
文書全体ではなく、抽出可能テキストのない画像のみページに対してページ単位のチケットを開きます。
よくある質問
ページ番号は0始まりですか、1始まりですか?
1始まりです。 人や大半のPDF UIの番号付けに合わせています。最初のフラグがページ1、次がページ2です。
OCRの割合は何を示していますか?
文字認識がまだ必要なページの割合で、文字のないページ数を全ページ数で割った値です。4ページのうち2ページに文字がなければ0.5、つまり文書の半分です。
文字が見えているのにOCRが必要なページがあるのはなぜですか?
見えている文字が、実は文字の画像にすぎないことがあるためです。スキャンしたページは画面上では問題なく見えても画像しか持たず、コピーや検索、読み上げができません。
文書全体にOCRをかけてはいけないのですか?
かけることはできますが、混在した文書では多くのページにすでに文字の層があり、時間と費用の無駄になります。必要なページだけを処理すれば、検索できるページを重ねて処理せずに済みます。
あるページの値が正しくない場合はどうなりますか?
確認はそこで止まり、1から数えたそのページの番号が示されるので、一覧を作った工程を直せます。空の一覧も受け付けず、何も返らないことを成功と取り違えないようにしています。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/searchable-ocr-flag \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text_layer":[true,false,true,false]}'const res = await fetch("https://api.kit.forhosting.com/pdf/searchable-ocr-flag", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text_layer": [
true,
false,
true,
false
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/searchable-ocr-flag",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text_layer": [
true,
false,
true,
false
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/searchable-ocr-flag", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text_layer":[true,false,true,false]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text_layer":[true,false,true,false]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/searchable-ocr-flag", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text_layer": [
true,
false,
true,
false
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.searchable_ocr_flag",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 25 |
max_pages | 200 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
テキスト層フラグの意味とページ単位OCRが重要な理由
その場合、テキスト抽出APIを呼ぶ下流ツールは空文字列を受け取り、全文検索はそのページを飛ばし、アクセシビリティリーダーは有用な内容を読み上げず、ネイティブテキストを期待する保管パイプラインは静かに失敗します。本エンドポイントはPDF自体を開きません。応答は1始まりのページ番号としてneeds_ocr_pagesとsearchable_pagesを列挙し、さらにneeds_ocr_count、searchable_count、all_need_ocr、all_searchable、page_countで割ったocr_ratio、ページごとのhas_text_layerとneeds_ocrを持つpages配列、ログやUIバナー向けのsummaryを返します。この形により、バッチジョブはフラグ付きページだけをOCRし、検索可能なページを飛ばし、PDFバイトを再解析せずにカバレッジを報告できます。
入力契約、応答形状、空リストのエラー
各要素は真偽値であるべきですが、ソルバーは数値の0と1、およびtrue、false、yes、no、y、n、zero、oneといった一般的な文字列トークンも受け付けるため、CSVやフォームのエクスポートを前処理なしで貼り付けられます。特定ページの無効トークンは1始まりのページ番号を示して失敗するため、マップを作ったプローブを修正できます。列挙されたページだけを処理する準備ができたら、自前のOCRランナーや兄弟のPDF OCR製品と組み合わせてください。文書順のページごとの存在フラグの必須かつ空でない配列であるtext_layerを含むJSONボディをPOSTしてください。同じ配列にはpages、flags、has_textという別名も使えます。空配列、空白文字列、欠落フィールド、nullはinvalid_inputで失敗し、text_layerを名指しして少なくとも1つのページフラグが必要だと伝えます。これらの失敗は課金されません。成功時はフラグ長に等しいpage_count、falseごとのneeds_ocr_pages、trueごとのsearchable_pages、両カウント、全ページがOCR必要なときのall_need_ocr、不要なときのall_searchable、ランタイム間で安定したテストのため小数12桁に丸めたocr_ratio、詳細なpages配列、summaryを返します。例: true, false, true, false のフラグはpage_countが4、needs_ocr_pagesが2と4、searchable_pagesが1と3、needs_ocr_countが2、ocr_ratioが0.5、4ページ中2ページがOCR必要という要約になります。
OCR必要ページフラグAPIが役立つ場面
デジタル化デスクは、ネイティブなデジタル出力とフラットベッドスキャンが混ざったバインダを受け取ります。アクセシビリティ改修チームは、選択可能テキスト検査に落ちるページの決定的な一覧が必要で、文書全体ではなくページ単位のチケットを開けます。「テキスト層の有無をすでに測った事前チェックは、数百ページのファイルを開き直さずにOCRキュー用のページ番号作業リストを得るために本エンドポイントを呼べます。検索やe-discoveryの基盤は同じフラグで、文書が索引可能かOCR待ちかを判断し、ocr_ratioフィールドは各受入バッチのうち画像のみがどれだけ残っているかを追う品質ダッシュボードに供給されます。実装はparseのティアAのため、成功した呼び出しは公開の基本料金$0.002のみで、モデルトークンも外向きネットワークもなく、検証失敗は残高を消費しません。リクエストは小さく保ち、テストで順序付きページ一覧を固定すれば、真偽スキャンだけのために文書AIスタックを立てずに、PDF在庫とOCR支出の間に再現可能なゲートが得られます。
連携の活用例
受入と索引準備
パイプラインでneeds_ocr_countとocr_ratioを使い、混在PDFが全文検索に足りるかOCR待ちかを判断します。
技術的な質問
OCRが必要なPDFページはどうフラグしますか?
ページ順の空でない真偽配列としてtext_layerを送ってください(true=抽出可能テキストあり、false=OCR必要)。APIはneeds_ocr_pages、searchable_pages、件数、ocr_ratio、summaryを返します。
text_layerが空だとどうなりますか?
タスクはinvalid_inputで失敗します。空または欠落したフラグ一覧は拒否され、沈黙を「OCR不要」と誤解しません。検証失敗は課金されません。
この機能はPDFを開いたりOCRしたりしますか?
いいえ。提供されたテキスト層の真偽フラグだけを分析します。フラグ測定には別のPDFプローブを、needs_ocr_pagesの処理には別のOCR製品を使ってください。
OCRが必要なPDFページのフラグ付けの料金は?
ブラウザツールは無料です。APIリクエストは成功呼び出しごとに前払いKIT残高から$0.002です。無効入力は課金されません。