이미지 파일에서 글이나 숫자를 인식해서 추출해야 할 일이 많이 생겼다.
일본어를 인식해서 추출하거나 숫자를 인식해서 추출해야한다.
해서 이번 기회에 확실하게 개발해서 구축해두려고 한다.
적절한 API를 찾던중 구글의 API를 발겼했다.
google vision api를 이용하면 적절하다 판단했다.
Google 클라우드 플랫폼
로그인 Google 클라우드 플랫폼으로 이동
accounts.google.com
에서 프로젝트 만들기를 누른다.
https://yunwoong.tistory.com/148
이 블로그를 참고해서 세팅해주었다.
[ OCR ] Google Cloud Vision API 를 이용한 OCR 개발 - Python
Google 에서는 매우 정확하게 이미지의 정보를 추출할 수 있는 API 제공합니다. Google Cloud Vision API는 많은 기능이 존재하지만 이 글에서는 이미지에서 텍스트의 영역을 감지하고 문자 인식(OCR)을 수
yunwoong.tistory.com
무료로 사용하기를 눌러 넘어간다.
API프로젝트를 만든후에는 '키'로 들어가서 '키추가'를 눌러 비공개 키를 발급받고나서 파이썬 프로젝트 파일과 같은 폴더에 넣어준다.
테스트를 위해서 Google Cloud Vision 라이브러리가 필요하다. 해당폴더에서 터미널을 열고 설치해준다.
pip install --upgrade google-cloud-vision
파이썬의 전체 코드는 다음과 같다.
import os
import re
from google.cloud import vision
from google.cloud.vision_v1 import types
# 인증 설정 (서비스 계정 키 JSON 파일 경로)
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '사용자가 발급받은 키의 위치.json'
# Vision API 클라이언트 초기화
client = vision.ImageAnnotatorClient()
# 이미지 파일 경로
# image_path = './image/nihongo.png'
image_path = './image/167_pic4.jpg'
# 이미지 열기
with open(image_path, 'rb') as image_file:
content = image_file.read()
# 이미지 데이터로 Image 객체 생성
image = types.Image(content=content)
# 이미지에서 텍스트 추출
response = client.text_detection(image=image)
texts = response.text_annotations
#숫자만 추출하는 함수
def uniqueNum():
# 추출된 숫자를 저장할 리스트
numbers = []
for text in texts:
# 텍스트에서 숫자 추출하여 리스트에 추가
extracted_numbers = re.findall(r'\d+', text.description)
numbers.extend(extracted_numbers)
# 중복 제거 및 정렬
unique_numbers = sorted(set(numbers), key=int)
print("Extracted Numbers:", unique_numbers)
#모든 문자를 추출할 함수
def allText():
for text in texts:
print(text.description)
uniqueNum()
# allText()

다음과 같은 이미지를 추출한 결과
Extracted Numbers: ['0', '06', '73', '77', '105']
같은 결과가 나왔다. 이는 잘나온 편이며 다른 경우에는 숫자가 조금 틀리거나 인식못하는 경우도 있었다.
이는 사진의 퀄리티를 높이거나 인식률이 더 좋은 OCR API를 찾아야 할 것 같다.
'Django' 카테고리의 다른 글
| Django 사용자로부터 이미지 받고 일본어 단어 추출하기 (1) | 2023.10.30 |
|---|---|
| Django 에서 내 프로젝트 적용하기 (1) | 2023.10.16 |
| Django 0914 내가 만든 프로그램과 연계 (0) | 2023.09.14 |
| DJango Python 0823 (0) | 2023.08.29 |
| DJango Python (0) | 2023.08.16 |