2025年5月11日日曜日

AIに頼らずに預金通帳をデータ化する方法


は?…いまさら預金通帳のデータ化?…とっくにネットバンクを使ってるし、なんならクラウド会計ソフトと同期して勝手に仕訳までしてくれるよ?…とかいう人もいるかも知んねーけど。
世の中まだまだまだそうもいかず、紙の通帳からデータ化しなきゃいけないことも少なくないわけで…。


イマドキはなんでもAIにお任せしちゃう傾向だし、たしかにいろいろな場面で実際に使ってみて便利だし役に立つことも多い。なら通帳もAIに投げちゃえばデータしてくれるんじゃ?…と思うかもしれないけど…ほら、AIって…けっこうウソつくやん?…ウソっていうか、勝手に余計な気を利かせてありもしない情報とか出してきたりするやん?…要はまだ信頼しきれないっていうか。

特に日本語含むOCRはChatGPTも苦手みたい。MistralOCRというAIサービスはOCRが強いという評判だったので試してみたけど、最初こそそれを実感したものの、今回の通帳サンプルを試したらまったくダメダメだったのでもういいやって感じ。

そもそも生成AIに対してはセキュリティ的に漠然とした不安がまだある。課金していればデータを学習に使われることはないとか言われたとしても、守秘義務がある立場で顧客の通帳をAIに投げるのはまだまだ躊躇いがある。

会計ベンダーとかが提供している「AI-OCR」みたいなサービスは、ChatGPTなどのチャット形式の生成AIに比べればデータを預ける心理的なハードルはなんとなく下がる気もするし、認識精度もかなり高いと聞くけど、お値段はさらに高いとも聞くので、もちろん手が出ない。手も足も出ない。

STREAMEDなどのAIと人力を合わせて精度高いデータ化を提供するサービスもあるようだけど、こちらもやはりセキュリティや料金の面で選択肢には入らない。

個人的な希望としては、データを外部に出さずローカルだけで処理が完結し、お値段的にもサブスクとかではなくできれば安価な買い切りのソフト…いや、もっと正直に言えばタダでやりたいところ。



OCRといえば、かつては読取革命とかe.TypistなどのOCRソフトを使って預金通帳のデータ化に取り組んでみたこともある。たしか1~2万円ほどの買い切りのソフトで、これくらいの負担なら許容範囲。が、いろいろと試行錯誤したものの期待した成果を挙げられず早々に限界を感じ、その後のOCRソフトの進化もなかなか見られないことから、通帳OCRは完全に断念してた。(ちなみに今その過去記事を読むとその試行錯誤っぷりが痛々しくて涙が出そうになる…)

ここへきて意外なところでOCRの性能アップが見られるようになり、もう一度やってみるかと思うに至った。そのきっかけがWindowsの付属ソフトであるSnippingToolというスクリーンショットのソフトだ。通帳の必要な部分をスクショするとテキストを認識してくれる。これが思いのほか精度が高い。しばらくは実際にこれを業務に使ってた。

ただ、通帳が何ページもあると1ページごとにスクショを撮るのが面倒に感じてくる。さらに通帳のレイアウトを再現してくれないので、行ずれ列ずれの調整が必要になってしまう。それでも全部手入力よりはマシではあったんだけど。
しばらくしてSnippingToolのβ版にテキストを表形式で認識する機能が追加されることを知り、大興奮してすぐに試してみたけど、残念ながら期待したようなものではなかった…。

で、次に目をつけたのがChromeだ。そう、あのGoogle謹製のWEBブラウザですよ。いつの間にかChromeでPDFファイルをテキスト認識する機能がついてた。
SnippingToolもそうだけど、Chromeも本来はOCRなんておまけの機能でしかないはずなのに、これがまたやたら精度が高い。往年のOCRソフトなんて比べ物にならない。通帳をスキャンしたPDFファイルをChromeで開くと、自動的にテキストを認識してくれる。10年前にあれだけ苦労した三菱UFJ銀行通帳のクセの強いフォントですらかなりの精度で認識してくれる。

他にも、例えばPDF編集ソフトにもOCR機能はあるし、PDFをデータ化してくれるオンラインサービスなどもあるけど、他のドキュメントはともかく、こと通帳に関してはこれらはお話にならないくらい精度が低い。

そこらへんを比較してみたのが以下の画像。



あれ?Chrome、文字の認識精度はともかくレイアウト的にこれじゃ使いものにならないんじゃ…と思うじゃん?
ChromeからコピーしたテキストをExcelではなくテキストエディタに貼り付けたものがこちら。



ちゃんと行がキレイに分かれてて、かつ、列も基本的には半角スペースで区切られている。摘要の文字等の中にも半角スペースが含まれていることもあるし、行も今回のようにきれいに別れてるケースだけではないので調整は必要だけど、ここまで規則性を持って取れればかなり加工がしやすい。さらに、スクショと違って複数ページの通帳PDFも一気にテキスト化できる。

読み取ったテキストを使えるデータにするための調整には「正規表現」の利用が欠かせない。また、調整項目は少なくないので、一気に置換処理できるツールを使ったほうが楽になる。最終的にはExcelに貼りつけてさらに調整~最後に検証…といった流れになる。そのあたりを動画にしたものがこちら。



この動画にはないけど、最後に残高欄の金額をチェックするのは必須。前残に預入・引出を足し引きして計算した数字と、読み取った残高の数字を比較して差がないかどうかをチェックする。ここで数字の誤認識や列ずれなどがチェックできる。


細かな修正は本当にいろいろなパターンがある。通帳の形式(銀行)もいろいろあるし、通帳(ATM)の印字の状態もいろいろあるし、PDFの画質もいろいろあるし、取引の内容もいろいろあるし、ChromeのOCRエンジンのご機嫌もあるし、手書きでメモを書き込んだりする人もいるし。
ただ、修正の度に置換リストに追加しておけば、だんだんと精度が上がって修正の時間もかからなくなっていくはず。この置換リストをいかに育てるかが重要。


まだまだ試行錯誤しながらで改善の余地はあるけど、すでに実戦投入していて大いに役立ってる実感はある。これをみてやってみようと思う人は少ないかもしれないけど。必要なものはChromeやテキストエディタなど無料のものだし、データも外部には出さないので、とりあえず試してみてもいいんじゃないだろうか。