TOOLPIPO LAB スキャンPDF · 12条件
スキャンPDFのページ抜け・重複・順番異常は、どこまで分かる?
印刷ページ番号入りのスキャン風PDFを自作し、ページ抜け・重複・順番の入れ替わり・OCR失敗などをブラウザ内で確認しました。
公開日・検証日:2026年10月5日
結論
印刷ページ番号が連続する文書なら、PDF上の進み方と比べることで、ページ抜け・重複・順番の戻りの手がかりを得られます。画像だけの自作PDF12条件を現行Toolで読み直しました。
番号だけOCRできないページがPDF内にある場合と、ページそのものがPDFにない場合は、同じ結果になりませんでした。一方、OCR誤読・意図した無番号ページ・章ごとの番号リセットは、人が紙面と照らして確認する必要があります。
今回の検証方法
- 入力
- 12種類、計70ページの自作PDF。紙面と番号を画像化し、PDF text layerなし。実在資料・個人情報なし。
- 測定
- 公開済みスキャンPDF・ページ抜けチェッカーの操作画面で、実際に全条件をOCRしました。
- 条件
- Tesseract.js 7.0.0、eng、数字whitelist、PSM 7。採用しきい値70。PDF.js 6.3.289でrender。
- データ
- PDF・README・測定JSON。Tool入力PDF・ページ画像・OCR結果の外部送信0。共通の広告・アクセス解析通信は別です。
PDFページと、紙面の印刷番号は別物
PDFビューア上の3ページ目と、紙面に印刷された「3」は同じ意味ではありません。途中欠落のPDFは4枚で、印刷番号は1、2、4、5です。PDF 2→3は1枚進みますが、印刷2→4は2進みます。
正常な10ページでは、候補0件だった
印刷1~10は全10枚を番号として採用でき、confidenceは全て96でした。抜け・重複・順序異常・進行不一致は0件です。ただし候補0件だけでPDF全体の完全性を保証する結果ではありません。
途中欠落・二重スキャン・順番変更は、異なる候補になる
1、2、4、5はページ抜け候補1件で、印刷3の不足候補でした。1、2、2、3、4は重複番号候補1件です。同じ番号でも、同じ紙面の二重スキャンか、誤植か、OCR誤読かは自動では区別できません。
1、2、4、3、5への入れ替えは、ページ抜け候補2件+順序異常候補1件でした。隣接する採用番号の進み方ごとに比較するため、1つの入れ替えで複数の候補が出ます。この候補数は、実際に欠落した紙の枚数とは違います。
OCRできないページがあるだけでは、ページ抜けにならない
5枚の1、2、3、4、5のうち、印刷3だけを極めて薄くしました。OCR textは空、confidenceは0で「読取できず」になりましたが、ページ抜け候補は0件でした。
採用できた印刷2と4の間にPDFページが1枚存在し、PDF上も番号も2進むためです。OCRできなかったPDFページも進行数に含まれます。紙面の3を確認して手動番号3を入力すると、「手動修正済み」1件に変わり、候補0件を維持しました。
意図した無番号ページは、除外すると結果が変わる
1、2、番号なし、3、4の5枚は、最初に「読取できず」1件とページ進行不一致1件が出ました。印刷2→3は1進むのに、PDF上は2枚進むためです。
紙面を見て3枚目を「番号なし」として除外すると、進行不一致は0件になりました。白紙を自動検出して除外する機能ではありません。人がこのPDFページは印刷番号を持たないと確認した場合の操作です。
OCRの結果は、番号位置とROI設定にも左右される
ROIは、画像のうちOCRする領域です。奇数PDFは右下、偶数PDFは左下に番号を置いた8枚では、右下固定で4枚読取・4枚読取できずでした。PDFページindex基準の交互位置を使い、ROI Aを右下・Bを左下にすると、全8枚を読取できました。読取時のconfidenceは96です。
上中央に番号を置いた4枚は、底部中央ROIで0枚読取。top-center presetへ変更すると、4枚読取に改善しました。空の領域をOCRしている場合は、しきい値を変える前にROIの位置を確認できます。
範囲の先頭・末尾の欠落には、期待する番号が必要
3~8の6枚は、期待番号なしで候補0件でした。解析範囲の最初の印刷番号を1と設定すると、範囲先頭の抜け候補1件、約2ページ分の不足に変わりました。
1~8の8枚も、期待番号なしで候補0件です。範囲の最後を10と設定すると、範囲末尾の抜け候補1件、約2ページ分の不足になりました。Toolが文書は必ず1から始まり10で終わると決めるわけではありません。
意図した番号リセットや、大きな飛びは人が確認する
1、2、3、1、2、3は、3→1で順序異常候補1件でした。章・付録・別文書の結合による意図した番号リセットかは自動で区別できません。
1、2、23、24は、2→23の進行21を大きな番号変化1件として表示しました。読み取った24のconfidenceは94、他は96です。現行実装は番号の進行が20を超えるとこの候補を出します。「抜け22ページ」と断定する結果ではありません。
12条件の実測結果
「PDF内の印刷番号」は、各PDFページに配置した番号の順です。変更前後の候補を全条件分載せています。
| 条件 | PDF内の印刷番号 | Tool結果 | 人が確認すること |
|---|---|---|---|
正常な10ページnormal-sequence.pdf | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | 候補0件 OCR読取 10/10 | OCR結果が紙面の番号と一致するか |
途中のページ欠落missing-page.pdf | 1, 2, 4, 5 | ページ抜け候補1件 OCR読取 4/4 | 印刷3が必要な文書か |
同じ番号の二重スキャンduplicate-page.pdf | 1, 2, 2, 3, 4 | 重複番号候補1件 OCR読取 5/5 | 重複スキャン・誤植・OCR誤読のどれか |
ページ順の入れ替えout-of-order.pdf | 1, 2, 4, 3, 5 | ページ抜け候補2件/順序異常候補1件 OCR読取 5/5 | 実際の順番と全候補の関係 |
意図した無番号ページintentional-unnumbered-page.pdf | 1, 2, 番号なし, 3, 4 | ページ進行不一致1件 変更後:候補0件 OCR読取 4/5 → 4/5 | この紙面が意図した無番号ページか |
途中の番号だけOCRできないocr-unreadable-middle.pdf | 1, 2, 3, 4, 5 | 候補0件 変更後:候補0件 OCR読取 4/5 → 4/5 | 存在するPDF 3の紙面番号を目視確認 |
左右交互の番号位置alternating-page-number-position.pdf | 1, 2, 3, 4, 5, 6, 7, 8 | 候補0件 変更後:候補0件 OCR読取 4/8 → 8/8 | PDF index基準の奇数・偶数と左右が合うか |
上中央の番号top-page-number.pdf | 1, 2, 3, 4 | 候補0件 変更後:候補0件 OCR読取 0/4 → 4/4 | 紙面に合うROI位置か |
範囲先頭の欠落missing-start.pdf | 3, 4, 5, 6, 7, 8 | 候補0件 変更後:範囲先頭の抜け候補1件 OCR読取 6/6 → 6/6 | 解析範囲の最初の番号はいくつか |
範囲末尾の欠落missing-end.pdf | 1, 2, 3, 4, 5, 6, 7, 8 | 候補0件 変更後:範囲末尾の抜け候補1件 OCR読取 8/8 → 8/8 | 解析範囲の最後の番号はいくつか |
章ごとの番号リセットsection-number-reset.pdf | 1, 2, 3, 1, 2, 3 | 順序異常候補1件 OCR読取 6/6 | 章・付録で番号が戻る意図があるか |
大きな番号変化large-number-jump.pdf | 1, 2, 23, 24 | 大きな番号変化1件 OCR読取 4/4 | OCR誤読・文書結合・本当の飛びか |
読取数はOCRのまま採用した番号の数です。手動修正と無番号除外は別に数えます。
正常な10ページ:OCRと設定の詳細
PDF 10枚。印刷番号 1, 2, 3, 4, 5, 6, 7, 8, 9, 10。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
| 6 | 6 | 6
| 96 | 6 | 番号読取 |
| 7 | 7 | 7
| 96 | 7 | 番号読取 |
| 8 | 8 | 8
| 96 | 8 | 番号読取 |
| 9 | 9 | 9
| 96 | 9 | 番号読取 |
| 10 | 10 | 10
| 96 | 10 | 番号読取 |
途中のページ欠落:OCRと設定の詳細
PDF 4枚。印刷番号 1, 2, 4, 5。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。ページ抜け候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 4 | 4
| 96 | 4 | 番号読取 |
| 4 | 5 | 5
| 96 | 5 | 番号読取 |
同じ番号の二重スキャン:OCRと設定の詳細
PDF 5枚。印刷番号 1, 2, 2, 3, 4。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。重複番号候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 2 | 2
| 96 | 2 | 番号読取 |
| 4 | 3 | 3
| 96 | 3 | 番号読取 |
| 5 | 4 | 4
| 96 | 4 | 番号読取 |
ページ順の入れ替え:OCRと設定の詳細
PDF 5枚。印刷番号 1, 2, 4, 3, 5。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。ページ抜け候補2件/順序異常候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 4 | 4
| 96 | 4 | 番号読取 |
| 4 | 3 | 3
| 96 | 3 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
意図した無番号ページ:OCRと設定の詳細
PDF 5枚。印刷番号 1, 2, 番号なし, 3, 4。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。ページ進行不一致1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 番号なし | (空) | 0 | — | 読取できず |
| 4 | 3 | 3
| 96 | 3 | 番号読取 |
| 5 | 4 | 4
| 96 | 4 | 番号読取 |
変更後
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 番号なし | (空) | 0 | — | 番号なし・除外 |
| 4 | 3 | 3
| 96 | 3 | 番号読取 |
| 5 | 4 | 4
| 96 | 4 | 番号読取 |
途中の番号だけOCRできない:OCRと設定の詳細
PDF 5枚。印刷番号 1, 2, 3, 4, 5。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | (空) | 0 | — | 読取できず |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
変更後
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | (空) | 0 | 3 | 手動修正済み |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
左右交互の番号位置:OCRと設定の詳細
PDF 8枚。印刷番号 1, 2, 3, 4, 5, 6, 7, 8。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.66,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | (空) | 0 | — | 読取できず |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | (空) | 0 | — | 読取できず |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
| 6 | 6 | (空) | 0 | — | 読取できず |
| 7 | 7 | 7
| 96 | 7 | 番号読取 |
| 8 | 8 | (空) | 0 | — | 読取できず |
変更後
ROI alternating/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.66,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.04,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
| 6 | 6 | 6
| 96 | 6 | 番号読取 |
| 7 | 7 | 7
| 96 | 7 | 番号読取 |
| 8 | 8 | 8
| 96 | 8 | 番号読取 |
上中央の番号:OCRと設定の詳細
PDF 4枚。印刷番号 1, 2, 3, 4。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | (空) | 0 | — | 読取できず |
| 2 | 2 | (空) | 0 | — | 読取できず |
| 3 | 3 | (空) | 0 | — | 読取できず |
| 4 | 4 | (空) | 0 | — | 読取できず |
変更後
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.02,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
範囲先頭の欠落:OCRと設定の詳細
PDF 6枚。印刷番号 3, 4, 5, 6, 7, 8。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 3 | 3
| 96 | 3 | 番号読取 |
| 2 | 4 | 4
| 96 | 4 | 番号読取 |
| 3 | 5 | 5
| 96 | 5 | 番号読取 |
| 4 | 6 | 6
| 96 | 6 | 番号読取 |
| 5 | 7 | 7
| 96 | 7 | 番号読取 |
| 6 | 8 | 8
| 96 | 8 | 番号読取 |
変更後
ROI same/confidenceしきい値 70/expected first 1/expected last 未指定。範囲先頭の抜け候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 3 | 3
| 96 | 3 | 番号読取 |
| 2 | 4 | 4
| 96 | 4 | 番号読取 |
| 3 | 5 | 5
| 96 | 5 | 番号読取 |
| 4 | 6 | 6
| 96 | 6 | 番号読取 |
| 5 | 7 | 7
| 96 | 7 | 番号読取 |
| 6 | 8 | 8
| 96 | 8 | 番号読取 |
範囲末尾の欠落:OCRと設定の詳細
PDF 8枚。印刷番号 1, 2, 3, 4, 5, 6, 7, 8。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。候補0件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
| 6 | 6 | 6
| 96 | 6 | 番号読取 |
| 7 | 7 | 7
| 96 | 7 | 番号読取 |
| 8 | 8 | 8
| 96 | 8 | 番号読取 |
変更後
ROI same/confidenceしきい値 70/expected first 未指定/expected last 10。範囲末尾の抜け候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 4 | 4
| 96 | 4 | 番号読取 |
| 5 | 5 | 5
| 96 | 5 | 番号読取 |
| 6 | 6 | 6
| 96 | 6 | 番号読取 |
| 7 | 7 | 7
| 96 | 7 | 番号読取 |
| 8 | 8 | 8
| 96 | 8 | 番号読取 |
章ごとの番号リセット:OCRと設定の詳細
PDF 6枚。印刷番号 1, 2, 3, 1, 2, 3。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。順序異常候補1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 3 | 3
| 96 | 3 | 番号読取 |
| 4 | 1 | 1
| 96 | 1 | 番号読取 |
| 5 | 2 | 2
| 96 | 2 | 番号読取 |
| 6 | 3 | 3
| 96 | 3 | 番号読取 |
大きな番号変化:OCRと設定の詳細
PDF 4枚。印刷番号 1, 2, 23, 24。このPDFをダウンロード
変更前(初回)
ROI same/confidenceしきい値 70/expected first 未指定/expected last 未指定。大きな番号変化1件
{"A":{"x":0.35,"y":0.83,"width":0.3,"height":0.15},"B":{"x":0.35,"y":0.83,"width":0.3,"height":0.15}}
| PDF page | 印刷番号 | OCR text | confidence | 採用番号 | status |
|---|---|---|---|---|---|
| 1 | 1 | 1
| 96 | 1 | 番号読取 |
| 2 | 2 | 2
| 96 | 2 | 番号読取 |
| 3 | 23 | 23
| 96 | 23 | 番号読取 |
| 4 | 24 | 24
| 94 | 24 | 番号読取 |
confidenceは、正解確率ではない
ToolPipoは、OCR結果を採用するためのしきい値として70を使います。今回の数字読取は94~96、空のOCR textは0でした。confidenceを「正解確率70%」とは解釈しません。高い値でも紙面との照合は必要です。
低confidence条件も試しましたが、9種類のサイズ・blur・noise条件は、数字として読めた場合94または96、その他は空のOCR textでした。数字としてparseできて70未満の条件を作れなかったため、低confidenceのfixtureは採用していません。しきい値を都合よく変更せず、大きな番号変化を含めて12条件に確定しました。
このToolだけでは判断できないこと
- 本当に紙がなくなったか、元文書の番号誤植か、意図した欠番か
- 意図した無番号ページか、章で番号が戻るのか、OCR誤読なのか
- ページ内容が同じか、PDF全体が完全か、スキャン品質全体がよいか
自動OCRは数字0~9をwhitelistにして、1~999999のアラビア数字を採用対象にします。ローマ数字i・ii・iii・iv、漢数字一・二・三、A-1や1/10を正常なページ番号として自動解析できる機能ではありません。番号の進行から出た候補を、紙面と合わせて確認してください。
自分のスキャンPDFを確認する
番号位置にROIを合わせ、読取できなかった番号は紙面を確認してください。必要に応じて手動修正・番号なし除外・範囲端の期待番号を使えます。
自分のスキャンPDFを確認する再現用PDFと測定JSON
12条件のPDFと測定結果をダウンロード/公開results JSON
README、12個のPDF、測定snapshotを含みます。個別PDFのSHA-256もJSONに保存しています。OCR結果は環境・render条件・ROIで変わる可能性があります。
package:317,848 bytes
SHA-256:75c9e59e8ff8e60c08eb4fbf152a8ea35cc90b71f8b665e61559d8175bb14186
ZIP自身の最終hashは循環参照を避け、外部の公開JSONを正本としています。同梱JSONは同じ測定結果のsnapshotです。
検証条件・実装資料
検証日2026-10-05。Chromium 151.0.7922.34。紙面は612×792 pt、画像1224×1584 px、Arial bold 48px。OCR時のPDF renderはscale上限2.5・最大400万画素。ROI画像をgray化しcontrast 1.35で処理する現行Toolの実装をそのまま使用しました。画像生成日時とPDF metadata日時は固定しています。
OCR workerの返り値を観測し、結果を変更せず保存しました。画面のOCR番号・採用番号・status・候補表示と、同じ判定moduleを使ったJSONの一致も確認しました。