2020. 4. 25. 21:27ㆍ일상
그제 tesseract을 통해 사진에서 글 추출에 성공했고
오늘은 python에서 tesseract를 사용하여 한 폴더 내의 사진 파일을 계속해서 추출하여 한 문서에 저장하는 것이 목표다
import pytesseract
from PIL import Image
#시작 시 사진 시작, 끝 번호 입력받기
startNum = int(input("시작 번호는? : "))
endNum = int(input("끝 번호는? : "))
totalNum = endNum - startNum + 1
#전체 사진 수만큼 반복
num = []
for i in range(0,totalNum, 1):
num.append(startNum + i)
#밑 " "에 사진이 저장되어 있는 주소 삽입.
path = "c:\\Users\\hi\\autopic\\num{}.jpg".format(num[i])
pytesseract.pytesseract.tesseract_cmd = r"C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
img = Image.open(path)
#이미지에서 글 뽑아내기
text = pytesseract.image_to_string(img, lang='eng', config='--psm 1')
#파일로 저장하기
f = open('c:\\Users\\hi\\autopic\\output.txt', mode ='a', encoding = 'utf-8')
#output.txt에 계속해서 저장하기 단 N.4처럼 번호를 붙여 구분하기
print("\n\nN.{}\n".format(num[i])+text, file = f)
f.close()
그래서 이렇게 썼다.
약 4시간 정도 소요됐다... 파이썬 분명히 특강으로 들었는데..
저거 하는 와중에 생겼던 오류들
1. FileNotFoundError: [Errno 2] No such file or directory:
뜻은 사진이나 디렉터리 저장되어 있는 주소 삽입할 때 자꾸 참고할 사진이 없음
이 코드 쓰는데 난리 났었다
path = "c:\\Users\\hi\\autopic\\num{}.jpg".format(num[i])
해결하는 방법으로는..
첫 번째. 정확한 주소를 쓴다. 제일 쉬운 방법은 해당 사진(폴더)이 위치한 곳으로 들어가 주소창을 직접 긁는 게 편하다.
그리고 파일의 정확한 형식을 써야 한다. 나처럼 png라고 잘못 써서 고민하고 앉아 있으면 나중에 분노가 씨게 온다.
두 번째. \을 하나만 쓰지 말고 \\ 두 개 써본다.
세 번째. path = r"~~~"로 앞에 r을 붙여본다.
2. UnicodeEncodeError: 'cp949' codec can't encode ~
유니코드 오류다. 이거를 해결하기 위해서는 encoding을 utf-8로 설정해야 한다.
f = open('c:\\Users\\hi\\autopic\\output.txt', mode ='a', encoding = 'utf-8')
이것처럼 뒤에 encoding을 추가해야 한다.
그 외...
사실 저 1번 오류 때문에 시간 다 잡아먹었다. 나중에 내가 jpg를 png로 써서 그 난리가 난 거를 확인하자마자 쓰러질 뻔했다
그리고... 알고 보니 알집 pdf?를 사용하면 대량으로 OCR이 가능하다고 봤다
.....
공부했다고 치고...
'일상' 카테고리의 다른 글
tesseract 사용해보자 (0) | 2020.04.23 |
---|