1. 処理の流れ
このツールは、試料筆跡(鑑定したい筆跡)と対照筆跡(本人のものと分かっている筆跡)それぞれの画像から 統計的な特徴量を機械的に抽出し、両者を数値で比較します。処理はすべてブラウザ内(JavaScript・Canvas API)で 行われ、画像を外部の画像解析サービスに送信することはありません。
- PDFがアップロードされた場合、ブラウザ内でページごとに画像へ変換する
- 画像を読み込み、処理用に縮小してグレースケール化する
- 大津の二値化(Otsu's method)により、背景とインク(筆跡)を自動的に分離する
- 筆跡部分の特徴量を6種類算出する
- 試料群・対照群それぞれの特徴量を平均する
- 項目ごとに一致度を計算し、重み付けした総合スコアを算出する
2. 抽出している特徴量
| 項目 | 内容 |
|---|---|
| インク密度 | 書字領域全体に対して、線(インク)が占める面積の割合。筆圧の強さや筆記具の太さの傾向を間接的に反映する。 |
| 書字領域の縦横比 | 実際に文字が書かれている範囲(バウンディングボックス)の縦横の比率。行の詰め方や文字の大きさの傾向を反映する。 |
| 平均線幅 | 横方向に連続するインク画素の長さを平均したもの。線の太さ・筆記具の種類の傾向を反映する。 |
| 傾き(推定角度) | 線の輝度勾配(Sobelフィルタ)から求めた方向ヒストグラムのうち、最も出現頻度の高い角度。文字全体の傾斜(右上がり・左上がりなど)の傾向を反映する。 |
| 筆跡の空間分布 | 書字領域を6×6のマス目に分割し、マスごとのインク密度を並べたベクトル。文字や行の配置の癖を反映する。 |
| 線の方向分布 | 輝度勾配の方向を8方向に分類した頻度分布(簡易的な方向ヒストグラム)。運筆の向きの傾向を反映する。 |
3. 一致度の計算方法
インク密度・縦横比・線幅・傾きのような単一の数値については、試料群平均と対照群平均の差を基準値でならし、 差が小さいほど1(完全一致)に近づく形で一致度を算出します。空間分布・方向分布のようなベクトル同士は、 コサイン類似度(ベクトルの向きの近さ)で一致度を算出します。
最終的な総合スコアは、6項目の一致度を重み付き平均したものです。空間分布・方向分布はより個人差が 出やすいと考えられるため、他の項目よりやや重く配点しています。
ここでいう「重み」とは、各項目の一致度を平均する際に、その項目にどれくらいの重要度を持たせるかを表す数値です。 単純にすべての項目を均等に扱うのではなく、参考になりやすいと考えられる項目の影響を少し大きくするための 仕組みで、実際には以下の数値を用いています。
| 項目 | 重み |
|---|---|
| インク密度 | 1 |
| 書字領域の縦横比 | 0.7 |
| 平均線幅 | 1 |
| 傾き(推定角度) | 1 |
| 筆跡の空間分布 | 1.4 |
| 線の方向分布 | 1.4 |
総合スコアは、各項目の一致度にこの重みを掛けて合計し、重みの合計(6.5)で割ることで算出しています。 書字領域の縦横比は、筆跡そのものよりも紙の使い方や記入欄の大きさなど他の要因の影響を受けやすいと考え、 他の項目よりやや軽め(0.7)にしています。なお、これらの数値は統計的・学術的な根拠に基づいて厳密に 決定したものではなく、開発時に妥当と考えられる範囲で設定した簡易的な重み付けです。
4. あえて行っていないこと
- 文字単位・画数単位でのマッチング(同じ文字が両方の画像に含まれているかは判定していません)
- 筆圧・筆記速度・筆順など、紙に残らない動的な情報の解析
- 機械学習モデルによる「本人かどうか」の直接判定(あくまで統計的な近さを示すのみです)
これらは専門の筆跡鑑定士が行う鑑定の中核的な部分ですが、静止画像からの自動処理だけでは代替できないため、 本ツールでは扱っていません。詳しくは「照合の信頼度について」をご覧ください。