在 Excel 裡用 ChatGPT 翻譯圖片上的文字

更新於 發佈於 閱讀時間約 13 分鐘

你應該已經聽說了 OpenAI ChatGPT 是如何如何強大,如何如何創造奇跡。。。我就不再畫蛇添足多加描述了。我們不如來讓它來為我們做點正經事(而不是把它當成玩具)。最近我有個朋友和我說了以下的問題:

  1. 他需要手動把圖片裡的文字一個一個寫出來(在電腦上)
  2. 他需要翻譯這些文字

其實。。。以上我們可以用一種方法,一石二鳥,一次性解決以上的問題。我的方案是,在 Excel 上用 OpenAI ChatGPT 來解決。 OpenAI ChatGPT.

1. 首先,你得先建立一個 Excel 文件,儲存為 .xlsm 文件格式,也就是可以用 Macro 的格式。

2. 在菜單裡,點擊 Developer 選項,然後選擇 Visual Basic。如果你沒辦法找到 Developer 選項,看這裡

3. 在 Visual Basic 的視窗裡,點擊 Tools,然後 References,得注意主要加入 “Microsoft XML, v6.0” 庫。

4. 在主要菜單裡選擇 Insert,然後是 Module。

5. 這時候,你會看見 Module 1 出現在 Project 的對話框。點擊它,把以下的代碼粘貼到編輯器裡。記得把你的 OpenAPI 的密鑰也寫進去。看不明白?別擔心。。。這裡本來就是低代碼,我們為你准備就是。

Option Explicit
Private p&, token, dic


Function TranslateCell(cellContent As Range, targetLanguage As String) As String
Dim httpRequest As Object
Dim apiKey As String
Dim apiUrl As String
Dim postData As String
Dim response As String
Dim jsonResponse As Object
Dim translatedText As String

' Replace with your OpenAI API key
apiKey = "YOUR-OPEN-API-KEY"

' Set the API URL for ChatGPT 3.5
apiUrl = "https://api.openai.com/v1/chat/completions"

' Prepare the POST data
postData = "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""role"": ""system"", ""content"": ""You are an expert translator""}, {""role"": ""user"", ""content"": ""Translate this word into " & targetLanguage & ", answer only: " & cellContent.Text & """}], ""temperature"":0.7, ""max_tokens"":1000, ""top_p"":1, ""frequency_penalty"":0, ""presence_penalty"":0}"

' Clean up escape caharacters
postData = Replace(postData, "'", "")

' Create an HTTP request object
Set httpRequest = CreateObject("MSXML2.ServerXMLHTTP.6.0")

' Configure the HTTP request
With httpRequest
.Open "POST", apiUrl, False
.SetRequestHeader "Content-Type", "application/json"
.SetRequestHeader "Authorization", "Bearer " & apiKey
.Send postData
End With

' Get the HTTP response
response = httpRequest.ResponseText

' Parse the JSON response
Set jsonResponse = ParseJSON(response)

' Get the translated text
translatedText = jsonResponse("obj.choices(0).message.content")

' Return the translated text
TranslateCell = translatedText
End Function


Function ParseJSON(json$, Optional key$ = "obj") As Object
p = 1
token = Tokenize(json)
Set dic = CreateObject("Scripting.Dictionary")
If token(p) = "{" Then ParseObj key Else ParseArr key
Set ParseJSON = dic
End Function
Function ParseObj(key$)
Do: p = p + 1
Select Case token(p)
Case "]"
Case "[": ParseArr key
Case "{"
If token(p + 1) = "}" Then
p = p + 1
dic.Add key, "null"
Else
ParseObj key
End If

Case "}": key = ReducePath(key): Exit Do
Case ":": key = key & "." & token(p - 1)
Case ",": key = ReducePath(key)
Case Else: If token(p + 1) <> ":" Then dic.Add key, token(p)
End Select
Loop
End Function
Function ParseArr(key$)
Dim e&
Do: p = p + 1
Select Case token(p)
Case "}"
Case "{": ParseObj key & ArrayID(e)
Case "[": ParseArr key
Case "]": Exit Do
Case ":": key = key & ArrayID(e)
Case ",": e = e + 1
Case Else: dic.Add key & ArrayID(e), token(p)
End Select
Loop
End Function
'-------------------------------------------------------------------
' Support Functions
'-------------------------------------------------------------------
Function Tokenize(s$)
Const Pattern = """(([^""\\]|\\.)*)""|[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?|\w+|[^\s""']+?"
Tokenize = RExtract(s, Pattern, True)
End Function
Function RExtract(s$, Pattern, Optional bGroup1Bias As Boolean, Optional bGlobal As Boolean = True)
Dim c&, m, n, v
With CreateObject("vbscript.regexp")
.Global = bGlobal
.MultiLine = False
.IgnoreCase = True
.Pattern = Pattern
If .TEST(s) Then
Set m = .Execute(s)
ReDim v(1 To m.Count)
For Each n In m
c = c + 1
v(c) = n.Value
If bGroup1Bias Then If Len(n.submatches(0)) Or n.Value = """""" Then v(c) = n.submatches(0)
Next
End If
End With
RExtract = v
End Function
Function ArrayID$(e)
ArrayID = "(" & e & ")"
End Function
Function ReducePath$(key$)
If InStr(key, ".") Then ReducePath = Left(key, InStrRev(key, ".") - 1) Else ReducePath = key
End Function
Function ListPaths(dic)
Dim s$, v
For Each v In dic
s = s & v & " --> " & dic(v) & vbLf
Next
Debug.Print s
End Function
Function GetFilteredValues(dic, match)
Dim c&, i&, v, w
v = dic.keys
ReDim w(1 To dic.Count)
For i = 0 To UBound(v)
If v(i) Like match Then
c = c + 1
w(c) = dic(v(i))
End If
Next
ReDim Preserve w(1 To c)
GetFilteredValues = w
End Function
Function GetFilteredTable(dic, cols)
Dim c&, i&, j&, v, w, z
v = dic.keys
z = GetFilteredValues(dic, cols(0))
ReDim w(1 To UBound(z), 1 To UBound(cols) + 1)
For j = 1 To UBound(cols) + 1
z = GetFilteredValues(dic, cols(j - 1))
For i = 1 To UBound(z)
w(i, j) = z(i)
Next
Next
GetFilteredTable = w
End Function
Function OpenTextFile$(f)
With CreateObject("ADODB.Stream")
.Charset = "utf-8"
.Open
.LoadFromFile f
OpenTextFile = .ReadText
End With
End Function

6. 好了,你基本上已經完成,現在可以復制你要翻譯的圖片。

7. 回到你主要的 Excel 文件,在菜單裡,選擇 Data,點擊 From Picture 選項,然後再選擇是否來自文件還是粘貼版。有時候你會見到服務器繁忙的錯誤訊息,等一會再嘗試就是。

8. 這時候,你應該看到文字已經從圖片解析出來。選擇那些你要翻譯的文字,然後用以下的方程式

=TranslateCell ([你要翻譯的 EXCEL CELL], "[你需要的語言]")

9. 你可以翻譯成任何語言,只要用同一個方程式就是。

VBA 自身其實並不支持 JSON 解讀。JSON 解讀其實有好幾種方法,我們這裡選用的是源自 Daniel Ferry 的方法。


留言
avatar-img
留言分享你的想法!
avatar-img
Victor Tai@lowcode101的沙龍
1會員
6內容數
2023/05/12
AI 圈子裡隨著 Google Bard 公布讓 180 個國家測試後越來越熱鬧。我們此次選了 Google Bard, OpenAI GPT4 和 AI21 Jurassic 來對決,現存說一個笑話開始。
2023/05/12
AI 圈子裡隨著 Google Bard 公布讓 180 個國家測試後越來越熱鬧。我們此次選了 Google Bard, OpenAI GPT4 和 AI21 Jurassic 來對決,現存說一個笑話開始。
2023/04/11
我熱愛電影,尤其是那些充滿科幻元素、展示人工智能的影片。由於人工智能的熱度猶如跑步機上的機器人一樣迅速攀升,我精選了一些具有引人入勝的人工智能概念的電影,讓你不禁懷疑這些電影是否很快就會成為我們的現實。那麼,准備好爆米花,一起深入了解吧! 魔鬼終結者(1984)/ 魔鬼終結者 2 (1991) 魔鬼
Thumbnail
2023/04/11
我熱愛電影,尤其是那些充滿科幻元素、展示人工智能的影片。由於人工智能的熱度猶如跑步機上的機器人一樣迅速攀升,我精選了一些具有引人入勝的人工智能概念的電影,讓你不禁懷疑這些電影是否很快就會成為我們的現實。那麼,准備好爆米花,一起深入了解吧! 魔鬼終結者(1984)/ 魔鬼終結者 2 (1991) 魔鬼
Thumbnail
2023/04/08
探究低代码/无代码迷思的幽默一面,我们一起来纠正错误观念,揭开隐藏的真相,并为有效使用这些工具提供一些见解。
Thumbnail
2023/04/08
探究低代码/无代码迷思的幽默一面,我们一起来纠正错误观念,揭开隐藏的真相,并为有效使用这些工具提供一些见解。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
开头我就要跟各位先说对不起,本来我是很想为大家把这部分实现并完成的。但是很抱歉,因为我用的Mac,而这部分代码实现起来的时候一直会如下报错: 当然,其实是可以迂回实现的,就是使用Mac本来的AppleScript,不过实现效果并不好,所以想想也就算了。毕竟我考虑,可能看我这些系列文章的人都多多少少
Thumbnail
开头我就要跟各位先说对不起,本来我是很想为大家把这部分实现并完成的。但是很抱歉,因为我用的Mac,而这部分代码实现起来的时候一直会如下报错: 当然,其实是可以迂回实现的,就是使用Mac本来的AppleScript,不过实现效果并不好,所以想想也就算了。毕竟我考虑,可能看我这些系列文章的人都多多少少
Thumbnail
Hi, 我是茶桁。 我们已经介绍了 OpenAI 的主要接口。这是基础知识系列的最后一讲,我们将讨论 OpenAI GPT 系列模型的其他接口。你可能不会经常使用其中一些接口,但了解它们不会有任何坏处,说不定你会在某些需求中用到它们。 在这篇文章中,我们将一起探讨 OpenAI 为文本改写和内容
Thumbnail
Hi, 我是茶桁。 我们已经介绍了 OpenAI 的主要接口。这是基础知识系列的最后一讲,我们将讨论 OpenAI GPT 系列模型的其他接口。你可能不会经常使用其中一些接口,但了解它们不会有任何坏处,说不定你会在某些需求中用到它们。 在这篇文章中,我们将一起探讨 OpenAI 为文本改写和内容
Thumbnail
我們這篇文章的目的是希望透過了解Code Interpreter的原理是什麼,進而去理解Code Interpreter的能耐,再透過理解這個工具可以做到什麼,來反思我們該把那些工作交給這個全新的AI應用工具,重點是那些功能是過去做不到但是現在能夠做到的了?
Thumbnail
我們這篇文章的目的是希望透過了解Code Interpreter的原理是什麼,進而去理解Code Interpreter的能耐,再透過理解這個工具可以做到什麼,來反思我們該把那些工作交給這個全新的AI應用工具,重點是那些功能是過去做不到但是現在能夠做到的了?
Thumbnail
ChatGPT 帶來的 AI 技術應用非常多元,這幾個月我也陸續介紹不少相關應用,其中有些非常實用且受到大家的喜愛。例如:GPT Translator,這個應用可以讓你利用 AI 技術幫你進行語言翻譯,對於想要出國旅遊的使用者來說,他不僅可以讓你更精準的與外國人進行溝通,同時還可以藉由他語音輸入功能
Thumbnail
ChatGPT 帶來的 AI 技術應用非常多元,這幾個月我也陸續介紹不少相關應用,其中有些非常實用且受到大家的喜愛。例如:GPT Translator,這個應用可以讓你利用 AI 技術幫你進行語言翻譯,對於想要出國旅遊的使用者來說,他不僅可以讓你更精準的與外國人進行溝通,同時還可以藉由他語音輸入功能
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
Thumbnail
GPT 連到 Google 試算表的時代終於來臨了,快來一起擁抱新科技!
Thumbnail
GPT 連到 Google 試算表的時代終於來臨了,快來一起擁抱新科技!
Thumbnail
不論你的使用場景是什麼,都需要對 ChatGPT 下指令,初學者可能會在網路上複製各路大神分享的指令來用,本篇文章將分享如何把常用指令透過簡單的代碼快速輸出!利用自然輸入法中「文字範本」的功能,來結合近期火紅的 ChatGPT、midjourney 和 New Bing 來有效提升工作效率。
Thumbnail
不論你的使用場景是什麼,都需要對 ChatGPT 下指令,初學者可能會在網路上複製各路大神分享的指令來用,本篇文章將分享如何把常用指令透過簡單的代碼快速輸出!利用自然輸入法中「文字範本」的功能,來結合近期火紅的 ChatGPT、midjourney 和 New Bing 來有效提升工作效率。
Thumbnail
我使用 ChatGPT 已經超過 1 個月了,極度關注 ChatGPT 的相關新聞。我發現網路與報章雜誌上都開始報導 ChatGPT 這款工具,但多數人還是不瞭解這款工具可以如何幫助我們。如果不了解 ChatGPT 的細節,我們就只能「聽說」這款工具很厲害,但卻無法為己所用。這篇文章分享 3 個快速
Thumbnail
我使用 ChatGPT 已經超過 1 個月了,極度關注 ChatGPT 的相關新聞。我發現網路與報章雜誌上都開始報導 ChatGPT 這款工具,但多數人還是不瞭解這款工具可以如何幫助我們。如果不了解 ChatGPT 的細節,我們就只能「聽說」這款工具很厲害,但卻無法為己所用。這篇文章分享 3 個快速
Thumbnail
安裝Python 安裝Open Ai 參考資料 註冊申請 Open AI API 至官方網站申請為會員,接著選 View API Key 進入後 選擇 Create CHAT 範例 官方範例 中文CHAT
Thumbnail
安裝Python 安裝Open Ai 參考資料 註冊申請 Open AI API 至官方網站申請為會員,接著選 View API Key 進入後 選擇 Create CHAT 範例 官方範例 中文CHAT
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News