過去の試験問題データを作る作業は、これまでこんな流れでした。
1.試験問題のPDFを用意する
2.AIにPDFを見せて、テキスト化を指示する
3.出てきたテキストをスプレッドシートに貼り付ける
一見すると簡単な作業です。ですが実際にやってみると、「数字が勝手に書き換わってしまう」という問題が出てきました。「6m以上」と書かれていた箇所が「7m以上」になってしまう、というようなケースです。
「文言は絶対に変えるな」と指示していたのに、なぜこんなことが起きるのか。原因を突き止めるところから始めました。
なぜ数字が変わるのか
AI(大規模言語モデル)は、画像から文字を読み取るとき、単に「見えた通りに書き写す」ことができません。学習してきた大量の文章データをもとに、「次に来る文字として、統計的にありそうなもの」を予測しながら出力する仕組みだからです。
そのため、画像に実際に書かれている数字よりも、AI自身が「よくありそうだ」と予測した数字の方を、優先して出力してしまうことがあります。読み取っているようで、実は予測で埋めている部分がある、ということです。
厄介なのは、出力が完全に自然な日本語で、一見どこもおかしく見えないという点です。文字が読めずに空白になるなら気づけますが、もっともらしく間違えられると、目視でも見逃してしまいます。
最初の思い込みが崩れる
「PDFの中には文字データ(テキストレイヤー)が埋め込まれているはずだから、それを直接抜き出せば、AIに読み取らせるより確実ではないか」
そう考えて、PDFからテキストを直接抜き出すコマンドを試しました。ところが結果は予想外のものでした。
抜き出したテキストを見ると、数字が意味不明な記号に化けていたのです。
・1 という数字が # という記号に
・2 という数字が ! という記号に
・「疼痛」という漢字が「!痛」に
原因は、PDFを作った印刷所の組版データに問題があり、文字と記号の対応表(フォント情報)が壊れていたことでした。しかも化け方はPDFごとにバラバラで、法則性を見つけて自動判定するのは不可能でした。
結局、「PDFから直接テキストを抜き出す」というアプローチは使えないという結論に至りました。画像として読み取らせるしかありませんでした。
解決策:作業を2段階に分ける
数字が変わってしまう問題に戻ります。試行錯誤の末にたどり着いたのが、作業を2段階に分けるという方法でした。
段階1:ひたすら書き写すだけ
画像を見て、書いてある通りに文字を書き写す。それ以外は何もさせない。「整える」作業は一切禁止します。
段階2:見た目を整えるだけ
段階1で書き写された文字列を受け取り、読みやすく整形する。ただしこの段階では、もう画像を見せません。
これが最大のポイントです。段階2の作業では、AIの手元には「元の画像」がありません。画像がなければ、AIには「本当はこの数字は違うのでは」と予測で埋め直す材料自体がなく、書き換えの動機が存在しなくなります。
見た目を整える作業と、内容を読み取る作業を分離することで、「整えているうちに、うっかり中身まで変えてしまう」という事故を構造的に防げるようになりました。
それでも起きた、次から次へのトラブル
2段階に分けたことで根本問題は解決しましたが、そこから先も一筋縄ではいきませんでした。実際に起きたトラブルの一部を紹介します。
選択肢の順序が入れ替わる
4択問題の答えの並び順(7, 7, 8, 8)が、いつのまにか(8, 8, 7, 7)に変わっていたことがありました。
問題が丸ごと消える、あるいは2回出てくる
長い試験問題をAIに処理させる際、作業を分割して渡していたのですが、その「切れ目」がちょうど問題の途中にかかってしまい、問題が消えたり、逆に2回出力されたりしました。対処として、「問題の区切り目でしか分割しない」という制御に変更しました。
指示した記号が、他の記号まで巻き込んで変わる
「(ア)は[ア]に変換しろ」と指示したところ、なぜか無関係な「①②③④」まで「[ア][イ]」に変換されてしまいました。AIに与える指示や見本が、意図しない範囲まで一般化されて解釈されてしまう例でした。
選択肢の番号の書式が変わる
ある試験は選択肢が「1. 2. 3. 4.」という書式でしたが、AIが勝手に別の試験の書式である「(1) (2) (3) (4)」に変換してしまいました。原因を探ると、AIに渡していた「お手本」の例文がすべて「(1)」形式で書かれていたためでした。指示の言葉そのものより、添えた具体例の見た目の方が強く影響するということがわかりました。
これは地味に見えて重要な問題です。選択肢の番号を(1)のような括弧付き数字でスプレッドシートに入力すると、多くの表計算ソフトはこれを「マイナス1」という数値だと解釈してしまいます。書式が意図せず変わると、こうした実務上の事故にもつながりかねません。
検証の仕組みを作る
AIに「絶対に変えるな」と指示するだけでは、100%は防げません。そこで、変化を機械的に検出する仕組みも並行して作りました。
・画像を見て書き写す段階と、整形する段階、それぞれの出力を比較して、文字数が大きく減っていないか自動チェック
・元の画像から独立してもう一度「数字だけ」を読み取らせ、本文の数字と突き合わせて一致するか確認
AIの指示だけに頼るのではなく、「本当に正しいかを後から確認できる」体制を整えました。実際、この検証の仕組みのおかげで、上記のようなトラブルの多くを発見できました。
わかったこと
今回の一連の作業を通して、AIを実務で使ううえでの教訓がいくつか見えてきました。
・AIは文字を「読んでいる」のではなく「予測している」ため、指示していないことまで気を利かせて改変してしまうことがある
・指示文の言葉だけでなく、添えた具体例の見た目が強く行動に影響する
「1回で完璧にやらせよう」とせず、作業を単純な工程に分割する方が、結果的に精度も検証のしやすさも上がる
・AIの出力を過信せず、機械的に正しさを確認する仕組みをセットで用意する