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
대략 읽어보니 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을 해주는 함수입니다.
위 코드를 실행해봤더니 이제는 더 이상 문제없이 인식 결과가 잘 출력됩니다.
관련 글
'Dev > python' 카테고리의 다른 글
[python] selenium으로 크롤링하는 중에 click() 안 먹힐 때 (3) | 2021.04.21 |
---|---|
[pandas] dataframe 모든 열 또는 행이 안 보일 때 대처 방법 (0) | 2021.04.20 |
[python] 리스트의 중복된 요소들 중에 고유한 요소들을 알고 싶다면, numpy.unique() (0) | 2021.04.19 |
[python] .ipynb 파일을 .py 파일로 변환하는 방법 (8) | 2021.04.16 |
[python] cv2 이미지를 pillow 이미지로 변경하기, Image.fromarray() (2) | 2021.04.13 |
[python] 리스트 안의 숫자 요소들을 문자로 변경하려면, map() 함수 사용 (4) | 2021.04.12 |
[anaconda+python] spyder 5.0.0 버전 열자마자 나오는 에러 메시지(You have missing dependencies! # Mandatory: spyder_kernels)에 관하여 (0) | 2021.04.10 |
[python+openpose] openpose 라이브러리를 사용해서 관절 포인트 검출하기 (window 10 환경) (7) | 2021.04.05 |