在 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
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
Hi, 我是茶桁。 我们已经介绍了 OpenAI 的主要接口。这是基础知识系列的最后一讲,我们将讨论 OpenAI GPT 系列模型的其他接口。你可能不会经常使用其中一些接口,但了解它们不会有任何坏处,说不定你会在某些需求中用到它们。 在这篇文章中,我们将一起探讨 OpenAI 为文本改写和内容
Thumbnail
Hi, 我是茶桁。 我们已经介绍了 OpenAI 的主要接口。这是基础知识系列的最后一讲,我们将讨论 OpenAI GPT 系列模型的其他接口。你可能不会经常使用其中一些接口,但了解它们不会有任何坏处,说不定你会在某些需求中用到它们。 在这篇文章中,我们将一起探讨 OpenAI 为文本改写和内容
Thumbnail
开头我就要跟各位先说对不起,本来我是很想为大家把这部分实现并完成的。但是很抱歉,因为我用的Mac,而这部分代码实现起来的时候一直会如下报错: 当然,其实是可以迂回实现的,就是使用Mac本来的AppleScript,不过实现效果并不好,所以想想也就算了。毕竟我考虑,可能看我这些系列文章的人都多多少少
Thumbnail
开头我就要跟各位先说对不起,本来我是很想为大家把这部分实现并完成的。但是很抱歉,因为我用的Mac,而这部分代码实现起来的时候一直会如下报错: 当然,其实是可以迂回实现的,就是使用Mac本来的AppleScript,不过实现效果并不好,所以想想也就算了。毕竟我考虑,可能看我这些系列文章的人都多多少少
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
不論你的使用場景是什麼,都需要對 ChatGPT 下指令,初學者可能會在網路上複製各路大神分享的指令來用,本篇文章將分享如何把常用指令透過簡單的代碼快速輸出!利用自然輸入法中「文字範本」的功能,來結合近期火紅的 ChatGPT、midjourney 和 New Bing 來有效提升工作效率。
Thumbnail
不論你的使用場景是什麼,都需要對 ChatGPT 下指令,初學者可能會在網路上複製各路大神分享的指令來用,本篇文章將分享如何把常用指令透過簡單的代碼快速輸出!利用自然輸入法中「文字範本」的功能,來結合近期火紅的 ChatGPT、midjourney 和 New Bing 來有效提升工作效率。
Thumbnail
ChatGPT 帶來的 AI 技術應用非常多元,這幾個月我也陸續介紹不少相關應用,其中有些非常實用且受到大家的喜愛。例如:GPT Translator,這個應用可以讓你利用 AI 技術幫你進行語言翻譯,對於想要出國旅遊的使用者來說,他不僅可以讓你更精準的與外國人進行溝通,同時還可以藉由他語音輸入功能
Thumbnail
ChatGPT 帶來的 AI 技術應用非常多元,這幾個月我也陸續介紹不少相關應用,其中有些非常實用且受到大家的喜愛。例如:GPT Translator,這個應用可以讓你利用 AI 技術幫你進行語言翻譯,對於想要出國旅遊的使用者來說,他不僅可以讓你更精準的與外國人進行溝通,同時還可以藉由他語音輸入功能
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
GPT 連到 Google 試算表的時代終於來臨了,快來一起擁抱新科技!
Thumbnail
GPT 連到 Google 試算表的時代終於來臨了,快來一起擁抱新科技!
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
我們這篇文章的目的是希望透過了解Code Interpreter的原理是什麼,進而去理解Code Interpreter的能耐,再透過理解這個工具可以做到什麼,來反思我們該把那些工作交給這個全新的AI應用工具,重點是那些功能是過去做不到但是現在能夠做到的了?
Thumbnail
我們這篇文章的目的是希望透過了解Code Interpreter的原理是什麼,進而去理解Code Interpreter的能耐,再透過理解這個工具可以做到什麼,來反思我們該把那些工作交給這個全新的AI應用工具,重點是那些功能是過去做不到但是現在能夠做到的了?
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News