2021-04-14 17:24:27

tesseract는 유명한 광학문자인식(optical character recognition, OCR) 툴입니다. OCR은 어떤 문서를 스캔했을 때 그 안의 문자들을 인식하는 용도 등에 많이 사용됩니다. pytesseract는 파이썬에서 tesseract를 사용할 수 있도록 도와주는 라이브러리입니다. 

 

저는 파이썬에서 tesseract를 이용해서 인식한 글자들을 print() 함수를 이용해서 콘솔에 띄우려고 했는데 아무 것도 보이지 않더라고요. 인식이 안 된 건가 싶어서 메모장에 저장해봤더니 글자들이 저장되어 있었습니다. 인식이 되었다는 뜻이죠. 

 

이게 무슨 일인가(이게 머선129) 싶어서 찾아봤더니 역시 stackoverflow에 좋은 정보가 있었습니다.

 

stackoverflow.com/questions/64877469/problem-with-printing-to-console-with-pytessaract-in-spyder

 

Problem with printing to console with pytessaract in spyder

I am currently using spyder via anaconda with python 3.8.5 on windows 10 and when I run this code: import cv2 import pytesseract pytesseract.pytesseract.tesseract_cmd = r"C:\\Program Files\\

stackoverflow.com

 

대략 읽어보니 pytesseract가 텍스트를 읽을 때 \x0c가 마지막 줄 뒤에 추가된다는 것입니다. 그것 때문에 그러한 현상이 발생한다는 것입니다. 따라서, 콘솔에 print되게 하려면 그 마지막 줄을 제거해줘야합니다. 

 

1
2
3
4
5
6
7
8
9
10
11
from PIL import Image
from pytesseract import image_to_string
import sys
 
filename = "./test5.png"
image = Image.open(filename)
result = image_to_string(image)
arr = result.split('\n')[0:-1]
result = '\n'.join(arr)
 
print(result)
cs

 

위 코드는 줄바꿈 \n을 기준으로 분리한 다음에 문제가 되는 마지막 줄을 제거한 후에 다시 줄바꿈 \n을 기준으로 합쳐준다는 뜻입니다. 참고로 image_to_string 함수가 실질적으로 OCR을 해주는 함수입니다. 

 

위 코드를 실행해봤더니 이제는 더 이상 문제없이 인식 결과가 잘 출력됩니다. 

 

관련 글

[ubuntu+python] 이미지 속 문자 검출 및 인식하기(OCR)

[ubuntu+python] 이미지 속 문자 인식한 것을 음성 파일로 변환해주기