iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
Build on AWS

Lightsail Lab: Build Your AI-Powered Website系列 第 8

【Day 08】查核系統核心功能之二:用 OpenAI GPT 進行文字處理

  • 分享至 

  • xImage
  •  

在上一篇文中,我們已經透過 OCR 技術,將圖片中的文字成功擷取出來。然而,光有「文字」還不夠,因為原始文字通常凌亂、難以閱讀。這時候,就能借助 OpenAI GPT 來進行進一步的處理與結構化。(不過,如果要非常精確的話,可能還是得在GPT整理完以後,再用如正則表示法的方式自己篩選文字。)

系統中的callGPT4o函式,負責把 OCR 得到的文字交給 GPT 4o 模型,並請它依照 prompt 的指示整理成特定格式的文字。本系統撰寫 prompt 時,使用了** few shot prompting **的方式給予模型更多內容, 讓模型產出更符合需求的回應。

首先,同樣地,我們把密鑰儲存在另一份檔案。

// app.py
GPT_APIKey = os.getenv("GPT_APIKey")
GPT_endpoint = os.getenv("GPT_endpoint")
GPT_deployment = os.getenv("GPT_deployment")

接著,串接 Azure OpenAI 的 API,這部分和串接 AI Vision API時一樣,Azure OpenAI 也有官方文件可以參考。

// app.py
from openai import AzureOpenAI

def callGPT4o(ocrText):
    client = AzureOpenAI(
        azure_endpoint=GPT_endpoint,
        api_version="XXXXXXX", //輸入自己使用的版本
        api_key=GPT_APIKey
    )
    // Prompt 的內容
    content = f"""
        請幫我依據以下項目整理...
        1.商品名稱或品名
        2.材質或材料
        ...
        10.警告
        ....(給了幾個範例)....
        ###
        文字檔:{ocr_text}
        """
        
    chunk = client.chat.completions.create(
        model=GPT_deployment,
        messages=[
            //可以賦予模型角色
            {"role": "system", "content": "你是一個OOOOO..."}, 
            {"role": "user", "content": content}
        //設定回復的字數限制
        ], max_tokens=500                                     
    )
    return chunk.choices[0].message.content

同樣地,系統需要一個讓使用者能呼叫 GPT 的「入口」-- Flask 路由/gpt

這段程式碼的功能包含:
1.接收使用者上傳的 OCR 文字檔。
2.呼叫 callGPT4o,運用 AI 執行文字處理。
3.回傳整理後的標示檢查結果。

在程式碼中一樣要記得加入錯誤提醒,方便除錯!

// app.py
@app.route('/gpt', methods=['POST'])
def gpt():
    session = db.Session()
    try:
        # 接收「前端」發送的資料
        ocrText = request.files['ocrText'].read().decode('utf-8')

        # 處理「前端」接受到的資料(呼叫 OpenAI GPT 功能)
        labelInspection = callGPT4o(ocrText)

        # 將處理後的資料在送回「前端」
        return jsonify({
            'labelInspection': labelInspection
        })

    except KeyError as e:
        # 處理缺少的dictionary中key值
        return f"KeyError: {e} not found in form data", 400

透過 Azure OpenAI 的輔助,減少了以往需要設立不同條件來做文字清洗的時間,大幅提升系統開發效率。


上一篇
【Day 07】查核系統核心功能之一:圖片文字辨識 (OCR)
系列文
Lightsail Lab: Build Your AI-Powered Website8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言