일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- List
- 깃허브
- 파이썬
- 리스트
- 링크
- 탐욕 알고리즘
- venv
- gpu 병렬처리
- 충북
- 알고리즘
- 구글 드라이브
- 유튜브
- docker-compose
- 장고
- G-Suite
- 아이폰
- nocookie
- Django
- 단축어
- pymongo
- python
- flask
- MongoDB
- DB
- 그리디 알고리즘
- Google Drive
- selenium
- 추천 영상
- 코딩
- 바로학교
- Today
- Total
SSAMKO의 개발 이야기
[google API] 이미지에서 텍스트 추출하기 - OCR 본문
Google에서는 인공지능을 활용한 다양한 API를 제공하고 있는데, 매력적인 점은 개인적으로 사용할때는 대부분의 AI를 무료로 사용할 수 있다는 것이다.
(개인사용자에게 무료로 제공하는 것은 아니고, 무료로 사용할 수 있는 일 할당량 혹은 월 할당량이 존재함)
그중에서 이미지에서 텍스트를 추출할 수 있는 API의 사용법을 알아보자.
필자는 쇼핑몰 상세이미지에서 텍스트를 추출하기 위해 사용했었는데, 퀄리티가 정말 매우매우 높다. 한글의 정확도도 99%정도로 매우 정확하고, 언어를 알아서 감지해주므로 다양한 언어가 있더라도 문제가 없다.
사용 예시
위 이미지에서 텍스트를 추출하면
고급스러운 합성가죽
고급스러움이 느껴지는 가죽으로
이물질이 묻어도 쉽게 제거가 가능하며,
정교한 박음질로 마감처리 되었습니다.
사이드 지퍼와 밴딩처리
사이드 안쪽에는 지퍼형태로
신고벗기 편안하며, 겉 사이드에는
고급스러운합성가죽고급스러움이느껴지는가죽으로이물질이묻어도쉽게제거가가능하며,정교한박음질로마감처리되었습니다.사이드지퍼와밴딩처리사이드안쪽에는지퍼형태로신고벗기편안하며,겉사이드에는
위와 같이 완벽하게 추출이 되는 것을 확인할 수 있습니다.
먼저, 이 API사용을 위해서는 GCP 프로젝트가 하나 있어야 한다.
그리고, API사용을 위한 Application credentail 파일을 가지고 있어야한다. (인증 방법은 몇가지가 존재한다.)
로컬 이미지에서 텍스트 추출
def detect_text(path):
"""Detects text in the file."""
from google.cloud import vision
import io
BASE_DIR = 'private'
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]=os.path.join(BASE_DIR,"ssamko-service-f********6.json")
client = vision.ImageAnnotatorClient()
with io.open(path, 'rb') as image_file:
content = image_file.read()
image = vision.Image(content=content)
response = client.text_detection(image=image)
texts = response.text_annotations
text_list = list(map(lambda x: x.description, texts))
if response.error.message:
raise Exception(
'{}\nFor more info on error messages, check: '
'https://cloud.google.com/apis/design/errors'.format(
response.error.message))
return text_list
위 함수를 사용하면 이미지를 통해 추출한 텍스트가 리스트 형태로 반환된다.
path 인자에 이미지 파일의 경로를 넣어주면 된다.
원격 이미지(웹 또는 GCS)에서 텍스트 추출
def detect_text_uri(uri):
"""Detects text in the file located in Google Cloud Storage or on the Web.
"""
from google.cloud import vision
BASE_DIR = 'private'
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]=os.path.join(BASE_DIR,"ssamko-service-f******6.json")
client = vision.ImageAnnotatorClient()
image = vision.Image()
image.source.image_uri = uri
response = client.text_detection(image=image)
texts = response.text_annotations
text_list = list(map(lambda x: x.description, texts))
if response.error.message:
raise Exception(
'{}\nFor more info on error messages, check: '
'https://cloud.google.com/apis/design/errors'.format(
response.error.message))
return text_list
단, 원격 추출의 경우에는 이미지 주소에서 다운로드가 원활하지 않을경우 에러가 발생하니 유의.
텍스트를 추출하는 것 외에도 이미지에서 해당 텍스트가 차지하고 있던 위치(vertices)등을 반환받을 수도 있다.
자세한 내용은 공식 페이지를 참고
cloud.google.com/vision/docs/ocr
'Python' 카테고리의 다른 글
[python] NLP - konlpy import시 No JVM 문제 (0) | 2021.01.29 |
---|---|
[python] pyenv로 원하는 파이썬 버전 설치하기 (0) | 2021.01.22 |
python 직접 작성한 module, package import 하기 (0) | 2021.01.08 |
[파이썬]진행상황 표시하기 - 한 줄로 print하기 (0) | 2020.12.25 |
[flask]DB ORM을 위한 라이브러리 sqlacodgen, pymongo (0) | 2020.12.21 |