API 예제 코드
API 통신을 테스트하기 위해 document를 참고하자.
https://guide.ncloud-docs.com/docs/ko/clovaocr-overview
https://api.ncloud-docs.com/docs/ai-application-service-ocr-ocr
두 번째 링크의 Custom API 탭에 가면 각 언어 별 호출 예제 코드가 존재한다.
간단한 파이썬 코드를 통해 API 호출을 진행해 보았다.
import requests
import uuid
import time
import json
api_url = 'YOUR_API_URL'
secret_key = 'YOUR_SECRET_KEY'
image_file = 'YOUR_IMAGE_FILE'
request_json = {
'images': [
{
'format': 'jpg',
'name': 'demo'
}
],
'requestId': str(uuid.uuid4()),
'version': 'V2',
'timestamp': int(round(time.time() * 1000))
}
payload = {'message': json.dumps(request_json).encode('UTF-8')}
files = [
('file', open(image_file,'rb'))
]
headers = {
'X-OCR-SECRET': secret_key
}
response = requests.request("POST", api_url, headers=headers, data = payload, files = files)
print(response.text.encode('utf8'))
기존의 발급받은 Secret Key와 API 주소를 기입하자.
나는 네이버 커리어의 이미지를 캡처해 테스트해보았다.
Test 이미지의 경로와 확장자명 format을 잘 설정해 주자.
result = response.json()
with open('result.json', 'w', encoding='utf-8') as make_file:
json.dump(result, make_file, indent="\t")
결과를 확인하기 위해 추가적으로 response 받을 Json 파일을 저장해 주는 코드를 작성한 뒤 TEST!
별다른 오류 메시지 API 요청에 성공한다면 result.json 파일이 생긴다!
해당 파일을 들여다보면 수많은 데이터들이 존재한다.
바운딩된 박스의 정보가 함께 전송되기 때문에 텍스트만 추출하기 위해서는 추가적인 파싱 작업이 필요하다!
위 코드로 전송받게 되면 한글이 유니코드로 인코딩 되어 깨지게 되는 현상이 발생한다.
with open('result.json', 'w', encoding='utf-8') as make_file:
json.dump(result, make_file, indent="\t", ensure_ascii=False)
ensure_ascii=False 파라미터를 넣어 한글 깨짐을 해결해 줄 수 있다.
[참고 블로그] https://jsikim1.tistory.com/222
텍스트 데이터 파싱
앞에서 말한 대로 텍스트 데이터만 추출하기 위해서는 추가적인 파싱 작업이 필요하다.
순서대로 images -> 0번째 값 ([] 형태로 wrap 되어 있다.) -> fields -> inferText에 텍스트가 존재한다.
따라서 다음 코드를 통해 텍스트만 추출하여 사용할 수 있다.
text = ""
for field in result['images'][0]['fields']:
text += field['inferText']
print(text)
'Study > Python' 카테고리의 다른 글
네이버 Clova AI OCR API를 사용해보자. (1) (0) | 2023.05.09 |
---|---|
[Python] 파이썬 코딩테스트 시간 단축하기 (0) | 2023.01.31 |
[Selenium] 페이지를 스크롤하며 무한 크롤링 하기 (0) | 2023.01.27 |
Selenium을 활용한 동적 크롤링 링크 주소 가져오기 (0) | 2023.01.26 |
Selenium을 활용한 네이버 쇼핑 품목 동적 크롤링 (0) | 2023.01.25 |