画像に写った文字を読む作業は、版面の物理的な構造を解析するところから始まり、字形の同定、認識誤りを前提とした結果の扱い、そして字を活字に起こす翻刻の判断まで、複数の層を持つ。古活字版のような歴史資料では、文字の境界さえ版面から直接には見えない。

版面解析——境界の推定から行グリッドの復元まで

くずし字の認識は、文字の矩形を検出するところから始まる。AIくずし字認識モデルRURIを使った処理では、まず文字の矩形を認識し、デジタル化の際に生じた1〜2度の傾きをその矩形から推定して補正する。次に行を検出してグリッドを推定し、版面にグリッドを重ねる。筆線がグリッドを横切っていれば分割できず同じブロックと判定し、交差がなければ分割できる可能性があると見る [UC-043 §活字ブロックの自動分割]。

嵯峨本『徒然草』のような古活字版では、文字の境界は版面から直接見えない。一つのブロックに複数の文字が連綿で彫られることがあり、37,314ブロック中で1文字のブロックが61.00%、2文字が28.60%、3文字が8.90%にのぼる [UC-043 §古活字データセットV2]。境界推定のアルゴリズムは、ブロックの高さが1ユニットの整数倍になるという前提と、ブロック間がベタ組みであるという前提のうえに組み立てられており、この2条件がおおむね成り立つ資料でのみ機能する [UC-043 §活字ブロックの自動分割]。

この処理の精度は測定可能で、かつ改善の余地がある。人手で作成したコードによる版面分割のF1スコアは0.8599で、筆線を切ってしまう誤りや空白部分を誤って切る誤りが残った。Sakana Fuguのマルチエージェントシステムに20ページの人手注釈データと分割処理の仕様を与え、AIがコードを書いてエラーをフィードバックするエージェンティックループを回したところ、残りの303画像に適用したF1スコアは0.9902に達した [UC-043 §活字ブロックの自動分割]。良い仕様と良い事例を与えれば、AIがコードを自ら改良できる段階にある。

字形の比較と同一活字の同定

認識した文字の刷りから物理的な活字へさかのぼることは、字形比較の問題として設計できる。同じ文字の異なる刷りは文字としては常に似ており、手がかりになるのはインクが一致しない部分の形である。同一活字による刷りでは輪郭に沿った細い縁だけが違い、別の活字であれば筆画そのものの位置が違う [UC-043 §活字ブロックの同定]。

この比較には2種類の測度を組み合わせる。ssim_ink は筆線が一致するかを測る。diff_blobs は余ったインクがどのような形をしているかを測る。この2つを、注釈済みのペアで学習したロジスティック回帰によって1つの数値にまとめたうえで、制約付き平均連結の凝集型クラスタリングを行い、平均類似度が閾値(0.85)を超える2つの族を順次併合する [UC-043 §活字ブロックの同定]。

クラスタリングの検証には、版面の物理的な構造を独立した手がかりとして用いる。1枚の紙(丁)は1つの版から一度に刷られるため、同一の丁に同一活字が2回現れることはない。同じ見開きで向かい合うページでは11,411ペア中227件が同じ活字にまとまったのに対し、同一丁では11,034ペア中1件にとどまった [UC-043 §活字ブロックの同定]。クラスタリングにはページ情報を与えたが丁の情報は与えていないため、この整合は独立した検証として機能する。

活字面の復元と組版構造の把握

同定した活字ごとに複数の刷りを重ねて平均すると、インキングや圧力による変動が相殺され、活字の面が復元される。最も濃い領域はすべての刷りにインクが乗っていた部分であり、嵯峨本からは1,601の印刷面を復元した。復元された面は3次元的な立体としても可視化できる [UC-043 §活字面の復元と組版の復元]。

版面の構造分析から、嵯峨本では1行の高さが17ユニットに固定されており、全体の88.3%の行がちょうど17ユニットに収まる。行の長さを調整するのはテキストの側であり、同じ文字に高さの異なる複数のボディを使い分けることで行の長さを揃える [UC-043 §活字面の復元と組版の復元]。短い行を詰め物で埋めることはせず、背の高い活字や連綿の活字を選んで1ユニットを稼いだり節約したりするという工夫の実態は、版面全体の定量的な集計によって初めて見えてくる。

認識誤りを前提とした結果の使い方

認識結果に誤りが残るという前提は、くずし字認識の実践に広く共有されている。KuroNetくずし字認識サービスでは、認識結果をIIIF Curation Viewerの文字マーカーとしてビューア上に重ねて表示し、元の文字と並べて確認・修正できる構成にしている。透明度・表示位置・サイズを利用者が変更でき、KuroNet Text Editorで読み順を手動指定してから翻刻テキストを確定する流れになっている [BP-001 §機械の認識結果を人手の確認に戻す]。

この往復構成は複数の事例に共通している。『捃拾帖』では人手でアノテーションを付与した826コマを教師データとして機械学習の物体検出を行い、残りの大半の冊から資料を機械的に切り出した。デジタル源氏物語では、くずし字OCRと自動読み順推定で生成した行単位テキストと人手翻刻データの編集距離を計算し、おおむね90%程度の精度で示された対応箇所候補を人手で確認している [BP-001 §機械の認識結果を人手の確認に戻す]。機械処理と人手確認は一方向ではなく、互いの入力になる。この往復が成立する条件として、機械の出力を受け取る側の機能がビューアに用意されていることと、初期の人手作業が教師データとして使える形で残っていることが挙げられている [BP-001 §機械の認識結果を人手の確認に戻す]。

翻刻——字を起こすという判断の層

翻刻は画像から文字を活字に起こす作業だが、そこには読解の複数の層が絡む。塚越氏の整理では、字を「読む」こと、誤りの向こうにある正しいテキストを「読む」こと、語形・構文を分析して「読む」こと、文脈・背景を調べて「読む」こと、関連する別の文献を参照して「読む」ことの5つに分かれる [UC-039 §文献を「読む」とはどういうことか]。テキストに誤字がある場合、知識に照らして正しいテキストを想定しながら読むという操作が含まれることになる。

この枠組みから言えば、翻刻は「字を読む」段階を扱うが、その上に乗る判断——原文の字体や誤字をどこまで残すか——は知識と判断によって決まる。日本語古文に適用する場合、OCRにはNDLOCR-Lite、形態素解析にはMeCabとUniDicという組み合わせが例として挙げられており、各工程で適切なモデルを選ぶことで同じ枠組みを言語ごとに差し替えられる [UC-039 §言語ごとにモデルと資料を差し替える]。どのモデルを選ぶかという判断そのものは専門家の知識に依存する部分が残ると塚越氏は述べている。読解工程の全体設計については「AI で問う・読む」を参照。