まえがき
非常に感動している。
詳しくはこの場にあまり関係ないことなので言わないが、私はとある文化人類学の個人研究のテーマを持っている。そのために数多くの江戸時代〜昭和にかけての日本語縦書き資料を所有している。これらがとにかくデジタルと相性が悪い。効率的な研究のために何とか文字起こししようとしても、LLMを使ったOCRだとまぁ精度が悪い。
横書き日本語は、皆さんもご存知の通り、ほぼ不満がないほどに文字起こしできると思う。しかしこれがまた縦書きになるととたんに精度が落ちる。
ましてや明治〜戦前にかけての資料となってくると、もはや見たことない表現や漢字のオンパレードで現代人ですら読むのが大変な資料ばかりになってくる。
これは生成AIも通ずるものがあるらしく、まぁまともに文字起こしできない。とはいえ、何とかしたい。今のままではなんか調べたい/まとめたいとか思ったときに莫大な紙の資料から掘り起こしていくのはそれだけで膨大すぎる時間を使ってしまう。
日本語向けのOCRがあるのは知っていたが、今まだ試したことがなかった。いうてもそんなに差がでないんじゃないかと勝手に思ってしまっていた。
試してみた。めちゃくちゃよかった。
使わせてもらったツール
日本語特化の文章画像解析エンジン: YomiToku
Qiitaでも詳細な解説記事があるのでこちらをぜひ読んでみてほしい。
試してみた
環境
- MacBook Pro M3 Proチップモデル
- macOS Tahoe 26.1
- Python3 3.13
インストール
楽勝すぎる。dockerfilerも公開 されているのでそちらを使ってコンテナ環境で動かすのでも全然良いと思う。
$ python3 -m venv jpn-ocr
$ source jpn-ocr/bin/activate
$ pip3 install yomitoku
実行
jpgとpdfを対象にMarkdownで出力させてみる。
さらに --vis をつけると、その対象の中でどこをどういうふうに解析したのかが可視化されたファイルが出力される。別になくてもいいのだが、なんとなく楽しいので出力させてみた。
pdfのときは --combine させたほうが良い気がする。複数ページが1つのファイルとして結合されて出力されるので便利。
詳細はREADMEにまとまってる のでこちらをよく読みましょう。
$ yomitoku /path/to/sample.jpg -f md
$ yomitoku /path/to/sample.pdf --combine --vis -f md
素材
対象はこちら。私の研究資料の一部なのだが100年ほど前のもので著作権的にもOKなので載せて大丈夫だろうと判断。
結果
これを YomiToku で一撃一発簡単出力させてみた結果がこちら。何もいじってない素のままのやつ。
偉<br>業<br>不<br>観
# 故菊池氏の霊に供ふ
愉大後要港部同合宿<br>軍<br>眞 崎 勝 大
自分が菊池氏と初めて相識の間さなつたのは、昭和三年十一月であつたかと記<br>憶する。即ち、同年自分が、隠戸艦長より轉じて大湊要港部参謀長さして赴任せ<br>し途中、野邊地靡にて大湊行きの汽車を待つてゐた時、突然、大湊前町長太田氏<br>に紹介せられてからのことである。爾來昭和六年の末迄、参謀長さしての在任中<br>は、公私共に大畿にお世話になり、家庭的にも相識るに至り、爾後大湊を去つて<br>後も、氏は上京すれば必ず自分を訪ねて異れた。而して昨年十月、自分が再び大<br>湊要港部司令官に補せられて赴任せし際の如きは、全く自分の事の様に喜ばれ、<br>率先野邊地澤迄遠路出迎へに來られ、共に健在を祀薦し合ったが、人間萬事塞翁<br>が馬で、全く一寸先は暦の世の中である。自分は、昨年、降雪前に要港部管下の
三七
ほぼ完璧やんけ!!!!!!!!!!!!!!!
ビビった。マジでビビった。正直使う前までは全然期待してなかった。どうせGPTとかと大差ないだろうなって思ってた。ちょっとぐらいはマシなんだろうけど...みたいな。
やっばー やばすぎてリアルで文字通りの感嘆の声をあげた。
いや、一部うまくいってないところはあるのだが、これぐらい全然良い。もとより100%の結果なんて思ってない。自分で調整すりゃいいだけ。ゼロから自分で文字起こしするのに比べたら圧倒的に楽な作業である。
比較
ちなみにChatGPT 5.1で同じ画像で試してみた結果がこちら。
故菊池氏の霊に供ふ
海軍少將
眞 崎 勝 次
自分が菊池氏と初めて相識の因を得たのは、昭和三年十一月であつたと記
憶する。即ち、同年自分が函館測候所長の職にあった當時、
しる所、野邊地町長であつた故大村五太郎氏の媒介により、
紹介せられたのである。以來、亡氏には私的に大變にお世話になつたが、
後、氏は上京するや、さ早く自分を訪ね、共同の親交を全うせんとし、
淡墨港湾司令に轉ぜられても、赴任前に必ず上京して、
妻女に親族の逗の迎へに奔走し、終始、心閑の至らぬ所での
家庭的に組合せられたる交誼を保ち來つたのである。その上、
偶然なる三年の十一月、自分が再び大村氏の如き一人と會ひ、自分の前途
と共に在り厭く厭く眞の交誼に接し合つたのが實に昨年、降職前
の事である。
ひどい。どこからその情報が出てきたんだ?っていう。もう創作している。
これならまだわかりません/できませんって言われたほうがはるかにマシだ。
ちなみに過去o3を使って文字起こしさせたときがあったのだが、そのときはこう言われた。こんなふうにできないって言われたほうがいい。それっぽい体裁だけがある間違った文字起こしをされてしまうよりは明らかにマシ。
申し訳ありません。
この画像についても 自動 OCR を試みましたが、実行環境に日本語(縦書き)用の Tesseract 言語データが入っていないため初期化に失敗し、文字抽出は出来ませんでした。
加えて、ChatGPT 自身には「画像を人間の目で読む」機能がなく、私が直接目視でタイプすることも技術的に不可能です。
もちろんプロンプトを色々調整すればもっと良い結果になるのかもしれないが、それをあーだのこーだのやっても、最初の時点でこの有様では実用に耐えない。YomiToku の足元にも及ばない。
CPUとGPU処理の違い
YomiToku はCUDAを使ったGPU処理をサポートしている。当然ながらそうしたほうが圧倒的に高速化される。NVIDIAのGPUがなければCPU処理でも全然動く。
私はApple SiliconなMacBookを使っている関係でCUDAは当然使えない。RTXを搭載した自作マシン自体はあるのだが、最近はめっきり起動すらしておらず、なんか億劫だったので、そのままMacBookで試した。
結果、単なる画像ぐらいであればせいぜい 3-4秒程度 で解析完了していた。これぐらいなら全然実用範囲内だ。
著作権的な問題があるのでここには載せられないが、同じく古めの日本語縦書き4ページのPDF資料を YomiToku に解析させてみたところ、こちらは 13秒 で終了した。こちらもバッチリ。こちらのほうが体感さらに精度はよかった。もう大感動である。
今後の話
適当にバッチ処理用のスクリプトでも書いて、めちゃくちゃたまりまくっている資料たちの文字起こしを夜通し頑張らせようかなと思っている。
いったい何週間かかるかわからんが、それでも人間がやるよりかは遥かに効率的で生産的で、そして人道的だ。
ちなみに、全然この分野の知識が自分になさすぎて、もしかしたらもっと良い方法/もっと良いツールがあるかもしれない。ぜひなにかご存知の方がいれば教えていただきたいです。
