私はpythonを使用して、IDカードから読み取り、画像から正確な結果を得るOCRシステムを作成していますが、間違った文字が多すぎるため、正しい答えが得られません。 IDカードを完全に読み取り、正しい正確な詳細を提供するようにテッセラクトをトレーニングするにはどうすればよいですか。さらに、.tiffファイルにアクセスして、プロジェクトでテッセラクトを機能させるにはどうすればよいですか。
ピテッセラクト認識を改善するための手順:
1)画像配列をクリーンアップして、テキストのみ(手書きではなくフォントが生成される)になるようにします。文字の端には歪みがないはずです。 しきい値を適用します(別の値を試してください)。また、いくつかの平滑化フィルターを適用します。 Morpholoficalの開閉を使用することもお勧めしますが、それは単なるボーナスです。これは、pytesseract認識を配列の形式で入力する必要があるものの誇張された例です。 https://i.ytimg.com/vi/1ns8tGgdpLY/maxresdefault.jpg
2)認識したいテキストを含む画像を高解像度にサイズ変更します
3)Pytesseractは一般的にあらゆる種類の文字を認識しますが、テキストが書かれているフォントをインストールすることにより、あなたは非常に正確さを増しています。
pytesseractに新しいフォントをインストールする方法:
1)TIFF形式で目的のフォントを取得します
2) http://trainyourtesseract.com/ にアップロードして、トレーニング済みのデータをメールで受信します
3)トレーニング済みデータファイル(* .traineddata)をこのフォルダーに追加しますC:\ Program Files(x86)\ Tesseract-OCR\tessdata
4)この文字列コマンドをpytesseract調整関数に追加します。
2つのトレーニング済みフォントがあるとしましょう:font1.traineddataとfont2.traineddata
両方を使用するには、次のコマンドを使用します
txt = pytesseract.image_to_string(img、lang = 'font1 + font2')
これは、ウェブ画像での認識をテストするためのコードです:
import cv2
import pytesseract
import cv2
import numpy as np
import urllib
import requests
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
TESSDATA_PREFIX = 'C:/Program Files (x86)/Tesseract-OCR'
from PIL import Image
def url_to_image(url):
resp = urllib.request.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
url='http://jeroen.github.io/images/testocr.png'
img = url_to_image(url)
#img = cv2.GaussianBlur(img,(5,5),0)
img = cv2.medianBlur(img,5)
retval, img = cv2.threshold(img,150,255, cv2.THRESH_BINARY)
txt = pytesseract.image_to_string(img, lang='eng')
print('recognition:', txt)
>>> txt
'This ts a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format\n\nThe quick brown dog jumped over the\nlazy fox The quick brown dog jumped\nover the lazy fox The quick brown dog\njumped over the lazy fox The quick\nbrown dog jumped over the lazy fox'