Lala's tower

오픈 ai 챗 gpt 와 엑셀로 OCR하기

오픈 ai 챗 gpt 와 엑셀로 OCR하기

2024-06-18 22:52:56

오픈 ai 챗 gpt로 이미지를 첨부하고 물어보면 답을 해줍니다. 이것을 엑셀로도 구현할 수 있습니다. 차량번호판이 찍힌 사진에서 차량번호를 읽어내는 코드입니다.

오픈 ai 챗 gpt 와 엑셀로 OCR하기 이미지

오픈 ai 챗 gpt Vision API로 차량번호 알아내기

엑셀 VBA를 이용하여 내 PC의 차량 번호판이 찍힌 사진으로 차량번호를 읽어내는 예제입니다.

엑셀 문서를 만들고 Alt+F11을 눌러 VBA Editor를 엽니다.

삽입/모듈 메뉴에서 아래 소스 코드를 복붙합니다.

"your-key"에 openai api 회원가입 후 api-key를 복붙하시면 됩니다.

차량번호판이 찍힌 사진 파일이 있는 경로를 아래에 반영합니다.

imagePath = "C:\path\to\your\image.png"

' 오픈 ai 챗 gpt 와 엑셀로 OCR하기
Sub SendImageToOpenAI()

    ' OpenAI API 키 설정
    Dim apiKey As String
    apiKey = "your-key"

    ' 이미지 경로
    Dim imagePath As String
    imagePath = "C:\path\to\your\image.png" ' 여기에 올바른 이미지 경로를 입력하세요

    ' 이미지를 base64로 인코딩하는 함수 호출
    Dim base64Image As String
    base64Image = EncodeImageToBase64(imagePath)

    ' HTTP 요청을 보내기 위한 객체 생성
    Dim http As Object
    Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")

    ' API 엔드포인트 URL 설정
    Dim url As String
    url = "https://api.openai.com/v1/chat/completions"

    ' JSON 페이로드 설정
    Dim payload As String
    payload = "{""model"": ""gpt-4o"", ""messages"": [{""role"": ""user"", ""content"": [{""type"": ""text"", ""text"": ""차량번호 스트링만 찾아줘.""},{""type"": ""image_url"", ""image_url"": {""url"": ""data:image/jpeg;base64," & base64Image & """}}]}], ""max_tokens"": 1000}"

    ' HTTP 요청 설정
    With http
        .Open "POST", url, False
        .SetRequestHeader "Content-Type", "application/json"
        .SetRequestHeader "Authorization", "Bearer " & apiKey
        .Send payload
    End With

    ' 응답 처리
    Dim response As String
    response = http.responseText

    ' 응답 내용 출력
    Debug.Print response

End Sub

Function EncodeImageToBase64(imagePath As String) As String
    ' 이미지를 base64로 인코딩하는 함수

    Dim inputStream As Object
    Set inputStream = CreateObject("ADODB.Stream")
    inputStream.Type = 1 ' adTypeBinary
    inputStream.Open
    inputStream.LoadFromFile imagePath

    Dim base64Stream As Object
    Set base64Stream = CreateObject("MSXML2.DOMDocument").createElement("Base64Data")
    base64Stream.DataType = "bin.base64"
    base64Stream.nodeTypedValue = inputStream.Read()

    EncodeImageToBase64 = Replace(base64Stream.Text, vbLf, "")

    inputStream.Close
    Set inputStream = Nothing
    Set base64Stream = Nothing
End Function

도구/참조 메뉴에서 아래 2가지를 체크합니다.

  • Microsoft XML, v6.0

  • Microsoft ActiveX Data Objects 6.1 Library

VBA editor에서 F5를 눌러 실행하면 디버그 창에 차량번호가 보입니다.

디버그 창은 Ctrl+G를 누르시면 열립니다.

OpenAI API Vision 문서
카카오톡으로 챗GPT 봇 만들기