ocr で文字認識するためのいわば辞書があるようで、通常は tessdata_first が使用されますがそうすると認識率が悪くなります。
認識率を上げるためには tessdata_best というものを使用する必要があるようです。
tessdata_first による認識
サンプルとして、E.フロムの「愛するということ」を使います。

これを tessdata_first で処理すると、
ている。男にとっての魅力的な女性、あるいは女にとっての魅力的な男性は、」
間を分が探している掘り出し物なのだ。ふつう[魅力的|という言葉は、人間の市場で人
があり、みんなが欲しがるような性質を、一包みに詰め合わせたものを意味している。行に左右される。
何が人を魅力的にするかは、肉体的にも精神的にも、その時代の流行にー九二〇年代には、お酒を飲んだりタバコを吸う、元気でセクシーな女性が魅力的だと
年人MMは
された。最近は、もっと家庭的でおしとやかなタイプのほうが好かれる。前世紀末から
今世紀初頭にかけて、男が魅力的な[商品」になるためには、大胆で野心満々でなければならなかった。今では社交的で寛容でなければならない
いずれにせよ、よふつう恋心を抱けるような相手は、自分自身と交換することが可能か
会的価値とい
範囲の商品]に限らちられる。私は「お買い得品]を探す。相手はは、私の長所やゃや可能性を、
メメっ
士
呈
点から望ましい物でなければならないし、同時にその相手極めたうえで、私を欲しがっていかお
G
六刻
ポ
にあらわれた部分も隠された部分もひっくるめこのように二人の人間は、自分の交換価値の限界を考慮したうえで、
この取り引きでは
ければならちらなoo。場で手に入る最良の商品を見つけたと思ったときに、恋に落ちる。
]ー
このレベルでは使い物にならないと思います。
tessdata_best を使う
Github の「https://github.com/tesseract-ocr/tessdata_best」にアクセスして、「jpn_vert.traineddata」をダウンロードします。18 MB ほどです。ちなみに tessdata_first は 3 MB ほどでした。
これらの学習データは、linux mint 21.1 では「/usr/share/tesseract-ocr/4.00/tessdata/」に収納されるので、コピーします。
sudo cp ~/jpn_vert.traineddata /usr/share/tesseract-ocr/4.00/tessdata/
そうして画像を処理してみます。
その結果は、
いずれにせよ、よふつう恋心を抱けるような相手は、自分自身と交換することが可能な範囲の[商品]に限られる。私は[お買い得品]を探す。相手は、社会的価値という衝点から望ましい物でなければならないし、同時にその相手は、私の長所ゃ可能性を、表にあらわれた部分も了明された部分もひっくるめて見極めたうえで、私を欲しがっていなければならないゅい。このように二人の人間は、自分の交換価値の限界を考慮したうえで、市場で手に入る最良の商品を見つけたと思ったときに、恋に落ちる。この取り引きでは
赤いアンダーラインの部分がおかしいと思います。全部で8箇所です。
随分改善されましたが、まだ少し不満が残ります。
これは 3 年前のデータなのでもう少し新しいものはないんでしょうかね。
tesseract 5.3.0 を使ってみる
最新の tesseract 5.3.0 を使ってみました。
sudo add-apt-repository ppa:alex-p/tesseract-ocr5
sudo apt-get update
sudo apt install -y tesseract-ocr
確認します。
tesseract --version
tesseract 5.3.0
leptonica-1.82.0
libgif 5.1.9 : libjpeg 8d (libjpeg-turbo 2.1.1) : libpng 1.6.37 : libtiff 4.3.0 : zlib 1.2.11 : libwebp 1.2.2 : libopenjp2 2.4.0
Found AVX2
Found AVX
Found FMA
Found SSE4.1
Found OpenMP 201511
Found libarchive 3.6.0 zlib/1.2.11 liblzma/5.2.5 bz2lib/1.0.8 liblz4/1.9.3 libzstd/1.4.8
Found libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.13
tessdata_best もコピー先も変更する必要があります。
sudo cp ~/jpn_vert.traineddata /usr/share/tesseract-ocr/5/tessdata/
実行結果は、
いずれにせよ、よふつう恋心を抱けるような相手は、自分自身と交換することが可能な範囲の[商品]に限られる。私は「お買い得品]を探す。相手は、社会的価値という観点から望ましい物でなければならないし、同時にその相手は、私の長所ゃや可能性を、表にあらわれた部分も了明された部分もひっくるめて見極めたうえで、私を欲しがっていなければならない。このように二人の人間は、自分の交換価値の限界を考慮したうえで、市場で手に入る最良の商品を見つけたと思ったときに、恋に落ちる。この取り引きでは
今回はおかしな部分は4箇所です。
tesseract 4 よりは少し改善しているようです。
python で tesseract 5 を使用する
コマンドラインから ocr した結果と python による結果は違っています。
python で tesseract を使用するスクリプトが間違っていたようです。
from PIL import Image
import pyocr
import re
import os
class Pocr():
def __init__( self ):
self.txt1 = ""
self.totaltxt = ""
self.imgDir = '/home/mituo/after'
self.imgArr = []
def get_imgArr( self ):
for dir_path, dir_names, file_names in os.walk(self.imgDir):
for file_name in file_names:
self.imgArr.append( dir_path + '/' + file_name )
self.imgArr.sort()
def analys(self):
tools = pyocr.get_available_tools()
tool = tools[0]
for eimg in self.imgArr:
print(eimg)
img = Image.open(eimg)
builder = pyocr.builders.TextBuilder(tesseract_layout=5)
self.txt1 = tool.image_to_string( img, lang="jpn_vert", builder=pyocr.builders.TextBuilder(tesseract_layout=5) )
self.del_spaces()
print(self.totaltxt)
with open('/home/mituo/result.txt', 'w') as f:
f.write(self.totaltxt)
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)
self.totaltxt = self.totaltxt + "\n---------------------------------\n" + text
if __name__ == '__main__':
pocr = Pocr()
pocr.get_imgArr()
pocr.analys()
今の段階では windows で「読んでココ」の方がいい
windows は嫌いなので、新しくコンピュータを購入するとすぐに linux mint をクリーンインストールします。
でも、ものによっては windows の方がいいものもあります。
例えば ocr に関しては、「読んでココ ver13」の方が誤認識が少ないようです。
私は、virtualbox の windows 10 で「読んでココ」を動かしています。
いずれにせよ、ふつう恋心を抱けるような相手は、自分自身と交換することが可能な範囲の 「商品」 に限られる。私は 「お買い得晶」を探す。相手は、社会的価値という観点から望ましい物でなければならないし、同時にその相手は、私の長所や可能性を、表にあらわれた部分も隠された部分もひっくるめて見極めたうえで、私を欲しがっていなければならない。このように二人の人間は、自分の交換価値の限界を考慮したうえで、市場で手に入る最良の商品を見つけたと思ったときに、恋に落ちる。この取り引きでは
全角スペースが少し入りますが、誤認識は1箇所しかありません。