일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- class
- Python
- 게임
- dfs
- Express
- Sequelize
- TypeScript
- MySQL
- game
- OCR
- Dinosaur
- jest
- 공룡게임
- Bull
- MongoDB
- GIT
- mongoose
- nestjs
- typeORM
- JavaScript
- cookie
- nodejs
- react
- Nest.js
- Queue
- flask
- 정렬
- AWS
- 자료구조
- Today
- Total
포시코딩
[Python][OCR] Tesseract, pytesseract in Mac 본문
설치
homebrew install tesseract
pip install pytesseract
pip install pillow # 이미지 분석, 처리 라이브러리
테스트 코드
test.py 파일과 테스트할 이미지를 같은 위치에 둔 상태로 아래 코드로 테스트 진행
from PIL import Image
import numpy as np
import pytesseract
filename = 'sample3.png'
img = np.array(Image.open(filename))
text = pytesseract.image_to_string(img)
print(text)
python test.py
명령어를 입력해 실행하면
위 이미지에 대해 정상적으로 글자를 인식하는 것을 볼 수 있다.
이제 한글을 인식시켜보자
한글 인식
한글 인식을 위해 학습된 데이터가 필요하다.
https://github.com/tesseract-ocr/tessdata/
GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the "best" LSTM models + legacy models
Trained models with fast variant of the "best" LSTM models + legacy models - GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the "best" LSTM models + legacy...
github.com
위 링크에 들어가서 kor.traineddata를 다운로드해서 아래 위치에 넣어주면 되는데
cd /usr/local/Cellar/tesseract/5.3.1/share/tessdata
open .
이렇게 터미널로 이동 후 파인더로 오픈해서 옮겨주면 쉽게 옮길 수 있다.
코드
from PIL import Image
import numpy as np
import pytesseract
filename = 'sample3.png'
config = ('-l kor+eng')
# config = ('-l kor+eng --oem 3 --psm 11')
img1 = np.array(Image.open(filename))
text = pytesseract.image_to_string(img1, config=config)
print(text)
한글 인식의 경우 config 설정을 추가해줘야 하는데, 위 코드처럼 kor+eng를 세팅해주면 된다.
그 뒤의 oem, psm은 OCR 엔진 모드와 페이지 세분화 모드에 대해 세팅해주는 부분인데
default 값이 있기 때문에 -l kor+eng만 적용하여 진행했다.
oem, psm에 대한 자세한 설정은 아래 참고
OCR Engine modes(–oem):
0 - Legacy engine only.
1 - Neural nets LSTM engine only.
2 - Legacy + LSTM engines.
3 - Default, based on what is available.
Page segmentation modes(–psm):
0 - Orientation and script detection (OSD) only.
1 - Automatic page segmentation with OSD.
2 - Automatic page segmentation, but no OSD, or OCR.
3 - Fully automatic page segmentation, but no OSD. (Default)
4 - Assume a single column of text of variable sizes.
5 - Assume a single uniform block of vertically aligned text.
6 - Assume a single uniform block of text.
7 - Treat the image as a single text line.
8 - Treat the image as a single word.
9 - Treat the image as a single word in a circle.
10 - Treat the image as a single character.
11 - Sparse text. Find as much text as possible in no particular order.
12 - Sparse text with OSD.
13 - Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific.
한글 인식 결과
테스트를 위해 위 게임 이미지를 사용하였고
컴퓨터에서 출력된 텍스트다보니 생각보다 결과물이 좋은 것을 볼 수 있다.
앞으로
외국서버에서 디코 채널을 통해 아이템 경매를 하는 것을 보고
아이템 종류마다 디코 채널을 구분하지 않으면 원하는 아이템을 찾기 힘들겠다는 생각이 들었고
만약 이미지를 올릴 때 어떤 종류인지, 어떤 부위인지만 걸러 필터링 해준다면 원하는 부위를 찾기 쉬울 것 같다는 생각이 들었다.
궁극적으로 배틀넷 인증 + 댓글을 통해 간단한 경매 시스템을 만들어 볼 생각이다.
이전에 진행했던 프로젝트에서 풍경 이미지를 구글 vision api를 이용해 필터링하여 추천 시스템을 구축한 바 있는데
유료인데다 요청 후 결과를 받는 시간 때문에 직접 해당 로직을 구현하지 못한게 아쉬움으로 남아
이번 기회에 이미지 구별까진 아니지만 텍스트 인식을 파이썬 라이브러리를 통해 외부 api 도움 없이 구현해보려 한다.
잘 되서 진짜로 사람들이 이용할 수 있는 사이트가 만들어지길 기대해본다.
참고 사이트
https://ddolcat.tistory.com/954
[Python]파이썬 테서랙트(Tesseract OCR) 설치 및 사용방법 총정리 : 이미지에서 문자 텍스트 추출하는
지난 6월 8일 애플 WWDC 2021 전세계 개발자 회의에서 애플은 OCR 기능을 선보였습니다. 강의 영상을 사진으로 찍은 후 바로 문서화 하거나 또는 길거리 간판에서 사진을 찍은 후 사진속의 전화번호
ddolcat.tistory.com
https://ddolcat.tistory.com/690
[Python] 파이썬 이미지 처리 pillow(PIL) 설치 및 사용 예제 총정리:드루와
이미지 분석 및 처리를 쉽게 할 수 있는 라이브러리(Python Imaging Library : PIL)가 있습니다. 바로 pillow모듈입니다. 다양한 이미지 파일 형식을 지원하며, 강력한 이미지 처리와 그래픽 기능을 제공하
ddolcat.tistory.com
https://velog.io/@rlagksql219/python-Tesseract-OCR-글자-인식-qcsivues
[python] Tesseract-OCR 글자 인식
Tesseract를 활용한 OCR, MSER 알고리즘으로 텍스트 위치 bounding box 표시
velog.io
Python에서 Tesseract 사용하기 for OCR
Tesseract 이미지로부터 텍스트를 인식하고, 추출하는 소프트웨어를 일반적으로 OCR이라고 한다. Tesseract는 1984~1994년에 HP 연구소에서 개발된 오픈 소스 OCR 엔진이며, 현재까지도 LSTM과 같은 딥러닝
junyoung-jamong.github.io
'Python' 카테고리의 다른 글
[Python] 소수점 n 자리까지 출력 (0) | 2023.05.16 |
---|---|
[Python] 재귀함수 제한 높이기(setrecursionlimit) (0) | 2023.04.25 |
리스트 초기화 방법과 리스트 컴프리헨션 활용 (0) | 2023.04.24 |
[Python] max에 조건 달기 (0) | 2023.04.23 |
집합 자료형 set (0) | 2022.12.27 |