개발/ETC

[Tesseract-OCR] 이미지에서 원하는 부분만 추출

wonpick 2021. 5. 10. 12:35

정형화 된 문서이고 심지어 스캔본인데 인식률이 좋지 못하다ㅠㅠ

from os import listdir
from os.path import isfile, join
import numpy
import cv2
import numpy as np
import sys

sys.stdout = open(r'C:\Users\user\Desktop\output.txt','w') #프린트된 출력물을 해당 경로 텍스트 파일로 저장함. a는 이어쓰기이고 w는 덮어쓰기 
mypath=(r'C:\Users\user\Desktop\ocr') #이미지 5장이 들어있는 폴더 경로
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = numpy.empty(len(onlyfiles), dtype=object)

for n in range(0, len(onlyfiles)):
    #images[n] = cv2.imread( join(mypath,onlyfiles[n]) )
    pytesseract.pytesseract.tesseract_cmd = (r'C:\Program Files\Tesseract-OCR\tesseract.exe')
    # 한글 인식률을 높이기 위해 trained data인 kor.traineddata,kor_vert.traineddata 다운 
    # 그 뒤 내 tesseract-ocr > tessdata파일에 이동
    images[n]= pytesseract.image_to_string((Image.open(join(mypath,onlyfiles[n]))), lang="kor")
    #images[n] = (images[n][30:168]) 
    print(("#{}\n{}\n\n".format(n+1,images[n][35:168]))) #인식률이 좋지 못해 최대한 통으로 가져왔다.

#np.savetxt(r'C:\Users\user\Desktop\ output.txt',images,fmt='%s') #이후 리스트만 저장할때