python で ocr — 導入

本ってなかなか捨てられません。

もういい年なので、妻はいろいろなものを断捨離したいようですが、私は本だけは捨てるのに抵抗があります。

でも、30年も前の心理学や禅の本なんかはもう二度と見ることはないと思います。それ以外の本でも複数回読む本というのはほとんど無いんでしょう。

であればやはり廃棄処分するしかないと思うのですが、せめて電子化できないかと思いました。

以前から本の電子化は何冊かやっていました。
電子化と言っても、ocr を使ってテキストファイルにしてそれを libreoffice writer にコピーして pdf にし、サーバー上に電子書棚を作って収納します。もちろんアクセス制限をかけます。

ocr は windows でしか動かない「読んでココ」とかを使っていました。

しかし、python でも ocr ができるようなのでやってみました。

環境は、linux mint 21.1 です。

いろいろインストール

pyocr をインストール。


pip install pyocr

tesseract をインストール。


sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

訓練済モデルのインストール。


sudo apt install tesseract-ocr-jpn  tesseract-ocr-jpn-vert

動かしてみる

以下のような画像ファイル(aaa.jpg)があったとして、

これを分析するには、


tesseract aaa.jpg ocr_out -l jpn_vert

結果は、

フロ イド 理論 は 何より も まず 社会 心理 学 で ある 。 一 般 に は 、 フ ロイ ド は 神経 症 者 個人 の 心理 の
研究 か ら 出 発し て 精神 分 析 理 論 を つく りあ げ 、 そ の 生涯 の 後半 に 至っ て その 理論 を 宗教 現象 や 文
化 現 象 な どの 集団 心理 に 応用 し た と 考え られ て いる が 、 わ た し の 意見 に よれ ば これ は 逆 で あっ
て 、 彼 は まず 集団 心理 現象 を 下敷 き に し て 、 そ の アナ ロジ ー に も と づい て 神経 症 者 個人 の 心理 を
理解 し よう と し た と 言う こと が で きる 。

開業 医 と な っ て 実際 の 神経 症 者 に 直面 し 、 そ の 症状 を 記述 し て 分 類 し 、 病 名 を つけ て いる だ け
で は すま な く な り 、 何 と か 患者 の 心 を 理解 する こと に よっ て 治療 を 行なわ ね ば な ら な く な っ た と
き 、 フ ロイ ド に と っ て 、 個 人 を 対象 と し て いた 当時 の 心理 学 、 精 神 病理 学 は ほとん ど 何 の 役 に も
立た な か っ た 。 心 理学 に は まだ 心 的 葛藤 の 概念 が 欠け て いた 。 個 人 は 外界 の 刺激 を 知覚 し て 、 本

能 的 欲求 に よっ て 反応 し て お り 、 外 界 や 他人 と 対立 する こと は あっ て も 、 内 的 葛藤 な ど は も っ て
いな いか の よう で あっ た 。 精 神 病理 学 は も っ ぱら 患者 の 脳 や 神経 の 異常 に つっ いて あれ これ 推測 し
て いる だ け で あっ た 。

神経 症 者 の 心理 を 理解 する た め に フロ イド が その 足がかり と し て 利用 し た の は 、 集 団 心 理 の 現
象 で あっ た 。 彼 の 抑圧 の 概念 な ど は まさ に その 典型 的 な 例 で あっ て 、 彼 が この 概念 を 説明 する た
め に どの よう な アナ ロジ ー を 用 いて いる か を 見 れ ば 、 そ の こと は 明らか で あろ う 。 彼 は っ ゃ 精神 分

いくつかの問題

誤認識は、最後の方で、『を「っゃ」としていることぐらいでしょうか。
割と優秀かもしれません。

半角スペースがいっぱい入っています。これは簡単に削除できそうです。

さらに、改行コードをどうするか考えなければなりません。

正規表現を使って編集

以下のようなプロセスでスペースと改行コードを処理しました。

  1. 全角と半角スペースを削除する。
  2. 2回以上続く改行コードをある文字列(‘————————‘)に変換。
  3. 改行コード(1つだけ)を削除する。
  4. ある文字列(‘————————‘)を改行コード(1つ)に変換する。

from PIL import Image
import pyocr
import re

class Pocr():
    
    def __init__( self ):    
        self.txt1 = ""

    def analys(self, img):

        engines = pyocr.get_available_tools()
        engine = engines[0]
        self.txt1 = engine.image_to_string(Image.open(img), lang="jpn_vert")

    def del_spaces(self):
        text = re.sub(r"[\u3000 ]", "", self.txt1)
        text = re.sub('\n{2,}', '----------', text)
        text = re.sub(r"\n", "", text)
        text = re.sub(r"----------", "\n", text)
        print(text)

if __name__ == '__main__':
    pocr = Pocr()
    pocr.analys('aaa.jpg') 
    pocr.del_spaces()

結果は、

フロイド理論は何よりもまず社会心理学である。一般には、フロイドは神経症者個人の心理の研究から出発して精神分析理論をつくりあげ、その生涯の後半に至ってその理論を宗教現象や文化現象などの集団心理に応用したと考えられているが、わたしの意見によればこれは逆であって、彼はまず集団心理現象を下敷きにして、そのアナロジーにもとづいて神経症者個人の心理を理解しようとしたと言うことができる。
開業医となって実際の神経症者に直面し、その症状を記述して分類し、病名をつけているだけではすまなくなり、何とか患者の心を理解することによって治療を行なわねばならなくなったとき、フロイドにとって、個人を対象としていた当時の心理学、精神病理学はほとんど何の役にも立たなかった。心理学にはまだ心的葛藤の概念が久けていた。個人は外界の刺激を知党して、本
能的欲求によって反応しており、外界や他人と対立することはあっても、内的葛藤などはもっていないかのようであった。精神病理学はもっぱら患者の脳生や神経の異常についてあれこれ推測しているだけであった。
神経症者の心理を理解するためにフロイドがその足がかりとして利用したのは、集団必理の現象であった。彼の抑圧の概念などはまさにその典型的な例であって、彼がこの概念を説明するためにどのようなアナロジーを用いているかを見れば、そのことは明らかであろう。彼はゃ精神分

まあまあ、といったところでしょうか。