スポンサーリンク
スポンサーリンク
イントロダクション

OCRの方法

スポンサーリンク

作業環境

CPU:Intel i5-12400F
GPU:Nvidia Geforce RTS 3060 (VRAM12GB)
OS:MS Windows11 Pro + WSL2 Ubuntu 22.04

2023年、旧機がぶっ壊れたので、新調しました。GPU搭載でAIをガンガン回してやろうと思ったら、まだまだVRAMが足りない。

裁断

最初に大量に本を処理していた時は、

のような大型の裁断機でバッサバッサ切っていたが、量が落ち着いてきて慣れてくると、

のセットで十分対応できる。ただし標準的な文庫本の厚さでも、まずカッターで、2,3分割する必要あり。

スキャナー

最初はこれでした。

CANON
DR2050C
販売終了

これを選んだ理由は特になくて、こんなものだと思って使っていたが、ガラス(?)部分に疵、汚れが付きやすく、そうなるとスキャンした画像に縞模様で出ます。それで何回も部品を調達して交換しました。また前面、背面でスキャンする感度が変わることが多々あり、調整もたまに必要。

最近は、自炊業界でのシェアでNo.1とされる、

を常用しているが、掃除や部品交換しなくても、今のところ全く問題なし。おススメです。

画像補正

黄ばんだり汚れたりしている古本の場合は、以下のbashスクリプトで画像のコントラストを上げ、認識度を向上させることができる。元の解像度が低いと、あまり効果なし。

Fred’s ImageMagick Scrips: TEXTCLEANER

OCRソフト

ソフトによって一長一短あります。

そもそも、
ソ(そ) と ン(ん)
ニ(に) と 二(2)
く(く) と 〈(やまかっこ) と <(小なり)
等々は、文字単体の形状を認識するだけでは判定できず、前後関係や文脈などを見ないと、意味をなさない文字の羅列になってしまう。そこで各社は裏で工夫をしているのだろう。私が試したものは…


メディアドライブ社製。ルビ対応。インストール型のアプリでは最も精度が良い。


元はパナソニック製。今はソースネクストが販売担当。ルビ非対応。まあまあの精度。

Googl Drive API
Google Driveに画像をアップロードし、Googleドキュメントで開くと、自動的にOCRしてテキスト化してくれる。しかも無料。精度は最高。おそらく文字単位の認識だけではなく、AIを利用して文脈から文字を判定していると思われる。ただしルビ非対応なので、ルビだけ単独行として文中にボンと出る。

Microsoft Word
画像をPDFに変換しWordに読み込ませると、テキストとして出力することができる。ルビ対応。精度はまあまあ。

Microsoft Azure Computer Vision API
Microsoftが提供しているオンライン・サービスで、より高度なOCRを施すことができる。認識結果を、文字と位置のセットでjson形式で返してくれるので、自力で解析すればルビを判定することも可能。難しそうでやっていません。料金が高いだけあって精度も高いが、全部処理すると相当の額がかかるので、一部の本でしかしていません。

Adobe Acrobat
画像をPDFとして読み込むと、自動でOCRしてくれて、テキストになる。ルビ非対応。精度は中の下。

eTypistや読取革命はGUIアプリであるので、基本的には手作業になる。しかしそれはかったるく、日が暮れるほど時間がかかるので、
 UWSC(フリーウェア)
 Power Automate Desktop(Windowsで追加インストール)
のようなアプリを駆使すると、マウスやキーボード操作を記録し再現してくれので、夜寝る前に仕掛けて放置しておけば、朝には相当でき上がっている(はず)。ただしWindows11ではUWSCの操作を記録できず、仮想のWindows10で記録するか、見当をつけてスクリプトを手作業で編集する。

ちなみに某小説をOCRした時の誤認識の数は:

google50
eTypist52
MS Azure64
Acrobat152
MS Word191
読取革命208

大体このような性能差になり、どれにしても誤認識は残る。
ではどうするか?

校正処理

  1. 上記のような様々なソフトで作成したテキストに対し、性能上位3つのテキストを選ぶ。
    azureがある場合、(azure, google, eTypist)のセット、
    azureがない場合、(google, eTypist, 読取革命)のセット。
    なぜ3つかというと、3つ以上のdiffをとるのが非常に困難なため。2つ日本語のファイルを比較する際は、jwdiffが役に立つ。
  2. それぞれのテキストについてMeCabで形態素解析を行い、日本語のトークンに分割に分割する。
  3. WinMerge(フリーウェア)でもって、3つテキストファイルのdiffとり、html形式で出力する。3つのdiffを簡単にとれるのがこれぐらい。
  4. Excelでそのhtmlファイルを読み込み、扱いやすいようにcsv形式に変換する。そのcsvにはソースごとに3列並んでいる。もちろんこのExcel操作の手作業も面倒くさいので、PowerShellスクリプトを通じて、bashから起動・入力・出力・終了する。
  5. 自作のpythonプログラムを使って、その3列で多数決をとり、2つが一致していれば正しいとみなし、入れ替え、1つのファイルとして出力する。

上記の小説における、こうしたmerge処理の結果は:
 merge処理後 33

かなり改善しても、まだ完璧ではない。
この段階ではほとんど気づかないくらいなので、ここで満足して終了というのが1つの手。
後述のように読み上げて音声として聴けば、あまり気にならない。
さらに校正したい場合は、OpenAI社のchatGPTに頼むと、わりと正確に間違いを指摘してくれる。しかし昨今のLGBT事情に鑑み、政治的に正しくするように、余計な事まで言ってくるのが難。「これはoooのxxxという作品ですね」というように、見破ってきたりすることもあるので侮れない。これば膨大な日本語の文献を学習した証拠だ。さらにAPI使用では料金も発生する。モデルがgpt3.5-turboの場合、1000トークン(※)あたり$0.002ほどだが、積もり積もると結構な金額になる。

※トークン
AIの大規模言語モデルの文字の処理単位。
英文の場合、1単語=1トークン、和文の場合、1文字=数トークン
なので日本語処理の方がコストがかかる。

AI翻訳の限界

前述のとおり、トークンの数え方は和文より英文の方が少なく、コストが安く上がりそうだ。したがって、原典が英文の場合、英語でOCRして、最後に日本語に翻訳する手があるがどうだ?
結論から言うと、著者の許可なく丸ごと勝手に翻訳すると、それは著者の”翻訳権”に抵触するので、やってはいけません。
しかし、それ以上に現在のAI翻訳の限界がある。

原典:S・S・ヴァン・ダイン『僧正殺人事件』 
THE BISHOP MURDER CASE byS.S.Van Dine
 より引用。

“Why don’t you tell Mr. Markham what you heard, uncle? What harm can it do?”

“I was thinking of you, Belle,” the professor answered softly. “But perhaps you are right.” He looked up reluctantly. “The fact is, Markham, Robin and Sperling were having some angry words over Belle. I heard only a little, but I gathered that each regarded the other as being guilty of playing unfair—of standing in each other’s way. . . .”

Google翻訳版

「聞いたことをマーカムさんに話したらどうですか、叔父さん? それはどんな害を及ぼす可能性がありますか?」

「ベル、あなたのことを考えていました」教授は静かに答えた。 「しかし、おそらくあなたの言うことは正しいでしょう。」 彼はしぶしぶ顔を上げた。 「事実は、マーカム、ロビン、スパーリングがベルに対して怒りの言葉を交わしていたということです。少ししか聞いていませんでしたが、私が聞いたところによると、お互いが不公平な行為をした、つまりお互いの邪魔をしたという罪を犯していると考えられていました。…」

DeepL翻訳版

“マーカムさんに話したら?害はないだろう?

“君のことを考えていたよ、ベル” 教授は優しく答えた。”しかし、おそらくあなたが正しい。”彼は渋々顔を上げた。「マーカムとロビンとスペリングは、ベルのことで怒っていた。私は少ししか聞いていないが、それぞれが相手を不公平な行為、つまりお互いの邪魔をすることに罪悪感を抱いていると考えているようだ。. . .”

鈴木幸夫訳、角川文庫版から引用:

「どうしてお聞きになったとおりをマーカムさんにおっしゃいませんの、伯父さま。何の支障《さしさわ》りがあるかしら」
「おまえのことを考えとったんだよ、ベル」教授は静かに言った。「しかし、お前の言うとおりかも知れんな」彼はしぶしぶと目を上げた。「マーカム、実はな、ロビンとスパーリングはベルのことで何かいきり立って言い合っておった。聞えたのはほんの少しだったが、どうやら互いに相手がフェアでないとか、——互いに邪魔をしとるように思っとるらしかった。……」

比較すれば、日本語のこなれ具合は一目瞭然。ビジネス分野でもっとも自然と評判のDeepL社の翻訳でさえも、まだ女言葉や敬語、上下関係など背景情報を読み取るのは出来てないようだ。一時期、DeepLに大きく差をつけられていたGoogle翻訳もいつの間にか追いついてきた。だがしかし、やはり小説分野などの翻訳では、人間の感性がまだ必須なのでしょう。

テキスト読み上げ

一度テキスト化してしまえばPDFの検索にも使えるし、携帯やPCで読み上げることができる。

  • メリット 
    読まないので目が疲れない、
    気楽に本をBGMにすることができる。
  • デメリット 
    音だけだと意味が通じない部分が多々ある。また、一般に読み上げ辞書が貧弱なので、誤字対策以上に誤読対策としてルビ登録をまめにする必要がある。
    気楽なBGMなので、頭を素通りするときがある。

Android用の読み上げアプリは、
青空司書
がおすすめ。縦書きで聴きながら読むことができる。

無料のAndroid用の音声合成エンジン(TTS)としては、

  • Aquestalk。アクエスト社製。「ゆっくり声」こと、独特の癖になる話し方が人気。
  • KDDILAB N2。KDDI研究所製。大企業の受付の美人お姉さんの声のイメージで、ビジネス向き。

本が気楽に大量に聴けるので、ぜひお試しください。

コメント

PAGE TOP
タイトルとURLをコピーしました