プログラミング・動画編集 備忘録

プログラミングや動画編集についての備忘録です

The Elder Scrolls: Arena の日本語化 - 3

前回

1年半ほど放置していたが、前回はFont改善のModを導入した上でTesseractのトレーニングデータを作ってOCRの精度が上がるかを試したがいまいちであった。
rrryutaro.hatenablog.com

今回

PCOTでの認識

PCOT(ピコット)はぬるっぽさんが開発された翻訳支援ツールで、まさにこれをやりたかったというもの。
http://www.gc-net.jp/s_54/

しかしながら、Tesseractを使用しているのでうまく読み取れない分は変わらず。
ただ、それなりに内容は自分が作っていたものよりは遥かに高精度である。
f:id:rrryutaro:20220205131755p:plain

このため、改善策の一つとしてフォントをもっと認識しやすく変えてしまう手がある。
こちらのサイトではArenaでのツール類などのリンクが置かれており、Misc UtilitiesにあるArenaSuite01e.zipにはフォントエディターがあるため、フォントを加工することができる。
ファイルをダウンロードして解凍するとArenaFo[f:id:rrryutaro:20220205134753p:plain]nt01.exeがあるので、そこにフォントファイルをドラッグするフォントの編集が行える。
次の画面はキャラクター作成時の質問に使われるフォントを表示したもの。
f:id:rrryutaro:20220205133118p:plain

任意のフォントをクリックすると右側のウィンドウにドットが表示される。
その上にあるスライダーはフォント表示する全体の幅と思われるが、現状詳細な仕様を把握していないのでいじらない方がよさそう。
f:id:rrryutaro:20220205133514p:plain

ここでは試しに小文字のaを次のように変更してみた。[Save Font]ボタンを押すことで即座にファイルに保存される。
f:id:rrryutaro:20220205133644p:plain

さっそく修正したフォントをArenaのフォルダに配置してゲームを実行してみる。
f:id:rrryutaro:20220205134857p:plain

ちゃんと変わっている事がわかった。ただ、ここからが問題。どのように変更すればより認識できるようになるのか。
どうやら 4x8 のサイズで表現しなければいけなさそうなのだが、気になるのは小文字の y や g が次の行の文字とくっついてしまっている。
なので、試しに先ほどのスライダーでサイズを広く出来るのかを試してみる。
小文字の y の幅を右端まで広げてみたが、どうやら横幅は最大で 16 まで広げられるようだが縦は変わらずなので、フォントは最大で 16x8 で作れる模様。
ただそれだとつぎのように文字が画面外に飛び出してしまうので、不用意に幅を広げない方が良いかと思われる。
f:id:rrryutaro:20220205140226p:plain

どうやらフォントのマス分が上下そのまま隣りあわせとなって余白が無いので、余白を作るならフォントをそのように作るしかない事がわかった。
このため、上下にくっつてしまうのを改善するなら、上か下のドットを開けておく必要がある。そうなると基本的には 4 x 7 でフォントを作るのが望ましいことになる。
試しに y と g の下 1 ドットを空けて、少し変更してみたが、g がいまいち。結果このようになった。
f:id:rrryutaro:20220205141257p:plain

g の認識が悪くなってしまった。くっつかなくはなったので、もう少し工夫すれば良さそうだが、ここのフォントはキャラクター作成の時にしか使われないようなので、別の方法を考えてみる。

テキストそのものを拾い出して利用する

ゲーム内のテキストはバイナリなりになっているかと思ったら、少なくともキャラクター作成での質問内容はQUESTION.TXTに次のようにそのまま書かれている。

2.   One summer afternoon your father, Talin, gives you a choice 
   of chores. Would you rather: 
a) Work in the forge with him casting iron for a new plow? (5v) 
b) Gather herbs for your mother who is preparing dinner? (5l) 
c) Go catch fish at the stream using a net and line? (5c) 

f:id:rrryutaro:20220205142744p:plain

文字列データがそのまま利用できるのでこれを翻訳して、質問内容を把握すれば良さそう。
なのでゲームをプレイしつつ、翻訳内容を検索できるものを作ってみた。
こんな感じで、質問の最初の文字をいくつか入力して検索して表示するといったもの。
f:id:rrryutaro:20220205175215p:plain

これで最初のキャラクター作成の質問と回答内容は日本語で理解して進める事が出来る。
また、テキストデータを使えるものはこの方法で翻訳データを追加して、無いものはPCOTを利用して翻訳する。
その際にはデータも収集して行けば、最終的にそれなりの翻訳データができるかも。
いちいち検索しなければいけないので手間だが、今の所思いつく方法はこんな感じ。

動画にもしてみました。
youtu.be