いちいち切り分けるのとかめんどいので、巨大なファイルとして読み込んでおいて、それをcanvasで切り出す方針でやってみよう。少しでもサイズを節約するために余白を削って5000x3600にする。
まず、1枚目の原稿用紙。表の4頂点に位置する4字の座標を取って、あとはこれを最小二乗法に突っ込んでアフィン変換とすれば良い。
実験をすると
y1, y2 s1 s2 我: 159, 245 ---> 0, 0 位: 4658, 254 ---> 19, 0 硬: 4645, 3290 ---> 19, 9 形: 150, 3281 ---> 0, 9
である。うまいパラメータt10, t11, t12, t20, t21, t22を持ってきて、
となるようにしてやれば良い。ただしs0たちは全部1である。
Y ≒ TSで最小二乗法をやるのでYST=TSSTを解けばよく、T=YST(SST)-1なのでTは
[[ 160. , 236.68421053, -1.22222222], [ 245. , 0.47368421, 337.33333333]]
なるほど。実際にやってみると上手くいったのでやったぜ。
さて、二枚目の原稿用紙も同様にやっていこう。実験をすると
y1, y2 s1 s2 牌: 158, 210 ---> 0,10 唯: 155, 1222 ---> 0,13 別: 4654, 1220 ---> 19,13 綿: 4655, 208 ---> 19,10
なのでTは
[[ 1.64166667e+02, 2.36736842e+02, -6.66666667e-01], [ -3.16333333e+03, -1.05263158e-01, 3.37333333e+02]]
だそうだ。
ということで、1枚目と2枚目が表示できるようになったので、燐字の漢字転写を入れたら表示してくれるような物を作るかね
あ、その前に、枠線付けるか選べるようにしておこう。
選べるようにした。後は組むのみ。
できた。
せっかく線形代数の御加護も得たのだし、それぞれの画像に分割して保存していかねば。
とはいえ、ローカルへの保存だけはJavaScriptでは書きづらいからなぁ。Pythonはよく扱い方を知らんし、とりあえず手で280枚ぐらいを保存していくしかないか。
どうにかする方法もあったんだろうが、手で保存した。
「文」の欄に「律」が入っていたので抹消。