"""
OCRを使ってみる。

◆Tesseractはpythonのモジュールではないので、要install
Windowsの場合：インストーラ
            # インストーラで言語データを選択しなかった場合は手配置。
            # Tesseract 日本語モデル ダウンロード用URL
            # https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata
Linuxの場合：各ディストリビューションのパッケージ管理ソフトウェア
            # Ubuntuの場合別途言語データの配置が必要
            # sudo wget -P /usr/share/tesseract-ocr/4.00/tessdata/ https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata

◆環境変数の設定
1.インストールしたTesseract-OCRのパスを環境変数「PATH」へ追記する。
2.環境変数「TESSDATA_PREFIX」へ"[インストール先ディレクトリ]\Tesseract-OCR\tessdata"を設定する。 # noqa

◆OCRライブラリ > pythonからTesseractをつかうライブラリ
pip install pyocr

参考：https://rightcode.co.jp/blog/information-technology/python-tesseract-image-processing-ocr

"""

from PIL import Image
import pyocr
import cv2

target = "funlead"

# pyocrへ利用するOCRエンジンをTesseractに指定する。
tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("ERROR：OCRツールが見つかりませんでした")
    print("　　　　環境変数の設定が必要です")
    exit()

tool = tools[0]

# OCR下処理
img = cv2.imread(f"./images/sample/{target}.PNG")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f"./images/sample/trim/{target}_GRAY.PNG", img)

"""
threshold = 180
img = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite(
    f'./images/sample/trim/{target}_THRESHOLD{threshold}.PNG', img)


img = cv2.bitwise_not(img)
cv2.imwrite(f'./images/sample/trim/{target}_BITWISE.PNG', img)
"""

# OCR対象の画像ファイルを読み込む
# img = Image.open("./images/concat/result.PNG")
img = Image.open(f'./images/sample/trim/{target}_BITWISE.PNG')
# img = Image.open(f'./images/sample/trim/{target}_GRAY.PNG')

# 画像から文字を読み込む
# tesseract_layout=1~6
builder = pyocr.builders.TextBuilder(tesseract_layout=4)
text = tool.image_to_string(img, lang="jpn", builder=builder)

"""
◆　書き込み用にファイルを開く
"w" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、ファイルに上書きで書き込みます(元々ファイルに入っていた内容はすべてクリアされます)。

"a" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、ファイルに元々入っていた内容はそのままで、最後に追加する形で書き込みます。

"x" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、 FileExistsError が発生します。
"""
f = open('./text/result_2_value.txt', 'w', encoding='cp932')
f.write(text)

adef8b3642e65a17a8d56a560408b49006655e51
<mask token>

<mask token>
if len(tools) == 0:
    print('ERROR：OCRツールが見つかりませんでした')
    print('\u3000\u3000\u3000\u3000環境変数の設定が必要です')
    exit()
<mask token>
cv2.imwrite(f'./images/sample/trim/{target}_GRAY.PNG', img)
<mask token>
f.write(text)

<mask token>
target = 'funlead'
tools = pyocr.get_available_tools()
if len(tools) == 0:
    print('ERROR：OCRツールが見つかりませんでした')
    print('\u3000\u3000\u3000\u3000環境変数の設定が必要です')
    exit()
tool = tools[0]
img = cv2.imread(f'./images/sample/{target}.PNG')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f'./images/sample/trim/{target}_GRAY.PNG', img)
<mask token>
img = Image.open(f'./images/sample/trim/{target}_BITWISE.PNG')
builder = pyocr.builders.TextBuilder(tesseract_layout=4)
text = tool.image_to_string(img, lang='jpn', builder=builder)
<mask token>
f = open('./text/result_2_value.txt', 'w', encoding='cp932')
f.write(text)

<mask token>
from PIL import Image
import pyocr
import cv2
target = 'funlead'
tools = pyocr.get_available_tools()
if len(tools) == 0:
    print('ERROR：OCRツールが見つかりませんでした')
    print('\u3000\u3000\u3000\u3000環境変数の設定が必要です')
    exit()
tool = tools[0]
img = cv2.imread(f'./images/sample/{target}.PNG')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f'./images/sample/trim/{target}_GRAY.PNG', img)
<mask token>
img = Image.open(f'./images/sample/trim/{target}_BITWISE.PNG')
builder = pyocr.builders.TextBuilder(tesseract_layout=4)
text = tool.image_to_string(img, lang='jpn', builder=builder)
<mask token>
f = open('./text/result_2_value.txt', 'w', encoding='cp932')
f.write(text)

"""
OCRを使ってみる。

◆Tesseractはpythonのモジュールではないので、要install
Windowsの場合：インストーラ
            # インストーラで言語データを選択しなかった場合は手配置。
            # Tesseract 日本語モデル ダウンロード用URL
            # https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata
Linuxの場合：各ディストリビューションのパッケージ管理ソフトウェア
            # Ubuntuの場合別途言語データの配置が必要
            # sudo wget -P /usr/share/tesseract-ocr/4.00/tessdata/ https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata

◆環境変数の設定
1.インストールしたTesseract-OCRのパスを環境変数「PATH」へ追記する。
2.環境変数「TESSDATA_PREFIX」へ"[インストール先ディレクトリ]\Tesseract-OCR\tessdata"を設定する。 # noqa

◆OCRライブラリ > pythonからTesseractをつかうライブラリ
pip install pyocr

参考：https://rightcode.co.jp/blog/information-technology/python-tesseract-image-processing-ocr

"""

from PIL import Image
import pyocr
import cv2

target = "funlead"

# pyocrへ利用するOCRエンジンをTesseractに指定する。
tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("ERROR：OCRツールが見つかりませんでした")
    print("　　　　環境変数の設定が必要です")
    exit()

tool = tools[0]

# OCR下処理
img = cv2.imread(f"./images/sample/{target}.PNG")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f"./images/sample/trim/{target}_GRAY.PNG", img)

"""
threshold = 180
img = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite(
    f'./images/sample/trim/{target}_THRESHOLD{threshold}.PNG', img)


img = cv2.bitwise_not(img)
cv2.imwrite(f'./images/sample/trim/{target}_BITWISE.PNG', img)
"""

# OCR対象の画像ファイルを読み込む
# img = Image.open("./images/concat/result.PNG")
img = Image.open(f'./images/sample/trim/{target}_BITWISE.PNG')
# img = Image.open(f'./images/sample/trim/{target}_GRAY.PNG')

# 画像から文字を読み込む
# tesseract_layout=1~6
builder = pyocr.builders.TextBuilder(tesseract_layout=4)
text = tool.image_to_string(img, lang="jpn", builder=builder)

"""
◆　書き込み用にファイルを開く
"w" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、ファイルに上書きで書き込みます(元々ファイルに入っていた内容はすべてクリアされます)。

"a" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、ファイルに元々入っていた内容はそのままで、最後に追加する形で書き込みます。

"x" を指定した場合、対象のファイルが存在していない場合は新規に作成して書き込みます。
ファイルが存在していた場合は、 FileExistsError が発生します。
"""
f = open('./text/result_2_value.txt', 'w', encoding='cp932')
f.write(text)
