OCR処理機能を作ります。
pytesseract でテキスト抽出を試みたが、英語しか読み取ってくれませんでした。
日本語で読み取りを可能にするため、tesseract-ocr-jpn をダウンロードします。
日本語で読み取りできるようになりましたが、正確ではないので精度を上げます。
chatGPTに聞いた方法は以下です。
OCRの精度を上げるための方法:
解像度を上げる: スクリーンショットの解像度を高くすることで、OCRの精度が向上する可能性があります。二値化: 画像を白黒に変換して、テキストと背景をはっきりと区別させます。これは特に背景がノイジーな場合に有効です。
ノイズ除去: cv2.medianBlur() や cv2.GaussianBlur() などの手法を使用して、画像中のノイズを減少させます。
明瞭化: cv2.equalizeHist() でヒストグラム均等化を行うことで、画像のコントラストを向上させることができます。これは、テキストが暗い背景に埋もれている場合や、画像全体が暗い場合に有効です。
試したが、ノイズ除去、明瞭化では逆に読み取りが不正確になったので二値化のみを実施します。
OCRで完全に正確に読み取ることはあきらめて、不完全な部分はAIに任せることにします。
例えば以下のような文章。
・正
●お得情報
・誤
例お得情報
このように不自然な文章が出てくるので、その修正はAIに任せます。
実際chatGPTに文章を直せと指示したら上記は修正できました。
これでスクリーンショットとテキスト抽出と修正はできました。
なのでテキストファイル化はほぼできると思うが、懸念があります。
・懸念1
全部のページのスクリーンショットをとってしまうと、図解やイラストなどのページもそのまま取得してしまいます。
そうなるとおそらく変な文章が出力されてしまいます。これをどう回避するかが問題です。
AIに判定させて、図解なのでパスとできれば一番いいが、そうもいかないかもしれません。
今思いついたのは画像でもテキスト抽出をして、chatGPTに誤字脱字チェックをさせてその多寡で判断することです。
画像スクショなら誤字脱字が過大になり、文字スクショなら誤字脱字は前後の2つとプラスアルファで過小になるはずです。
あるいは明らかにおかしい単語文字が複数入っているかどうか。それで判定できるはずです。
・懸念2
もう1つの懸念は画像と文章が混在するページです。
これだと画像部分はおかしな文章がたくさん出てきて、文章部分はまともな文章が出てきます。
おかしな文章が出てきたら捨てるスタイルをとると、まともな文章も捨ててしまいます。
chatGPTに「以下はおかしな文章を含むので、文脈に合わないおかしな文章を捨てて。全部捨てても構わない」と命令することを考えています。
・懸念3
chatGPTに直させると、ページごとの区切りがおかしくなります。
以下は書籍の一節である。
誤字脱字などおかしなところを直して。
ただし、途中から取り出し、また途中までしか取り出していないので、文章の最初と最後が中途半端である。
それは直さなくていい。
だと、意図通りになりました。
そして、以下のようにしたら大丈夫そうでした。
以下は書籍の一節である。
誤字脱字などおかしなところを直して。
ただし、途中から取り出し、また途中までしか取り出していないので、文章の最初と最後が中途半端である。
それは直さなくていい。
また、おかしな文章を含む場合があるので、そのときは文脈に合わないおかしな文章を捨ててほしい。
全部捨てても構わない。