跳過到頁腳內容
與其他組件的比較

Tesseract C# 對比 IronOCR:在 .NET 中該選用哪個 OCR 程式庫?

在深入探討實作細節之前,此比較表總結了使用開源 Tesseract .NET封裝器和商業IronOCR函式庫之間的主要特性和差異。 這些差異會影響使用 C# 應用程式建置 OCR 的.NET開發人員的開發速度、部署複雜性和長期維護成本。

TL;DR :Tesseract 是一款功能強大的免費 OCR 引擎,但需要手動設定、外部預處理流程和仔細的跨平台管理。 IronOCR將相同的 Tesseract 引擎與自動影像預處理、原生 PDF 支援以及託管的.NET API 打包在一起,從而消除了所有平台上的安裝摩擦。

Tesseract 和IronOCR 的比較概覽?

下表列出了.NET開發人員在評估 OCR 選項時,兩種方法之間最具影響力的差異。

Tesseract .NET封裝器與IronOCR功能比較
特徵Tesseract .NET封裝器IronOCR
安裝Tesseract NuGet套件 + tessdata 資料夾 + C++ 運行時`Install-Package IronOCR` (單一軟體包)
影像預處理手動(需要外部工具)內建功能(降噪、偏斜校正、解析度增強)
影像格式支援有限(需進行PIX格式轉換)原生支援 PNG、JPG、TIFF、GIF、BMP、WebP 格式。
語言支援100+(手動訓練資料下載)127+ 語言包(透過NuGet)
PDF處理需要其他庫內建 PDF 文件支持
跨平台每個平台的複雜配置在 Windows/Linux/macOS 上保持一致
條碼/二維碼讀取不包含融合的
可搜尋的 PDF 輸出手動實施內建可搜尋 PDF 匯出功能
商業支持僅限社區專業工程支援及漏洞修復
執照Apache 2.0(免費)商業版(提供免費試用)

對比結果顯示,兩種方法各有優勢。 Tesseract 的開源許可使其對預算受限的專案具有吸引力,而 IronOCR 的功能集和簡化的部署則吸引了優先考慮開發速度和生產可靠性的團隊。

如何在.NET專案中安裝各個 OCR 函式庫?

在.NET專案中設定原生 Tesseract 除了初始NuGet安裝之外,還需要多個設定步驟。 NuGet上的 TesseractOCR 套件封裝了 Tesseract 引擎,但.NET開發人員也必須管理語言檔案並確保目標電腦上安裝了 Visual C++ 執行階段。

在 Visual Studio 中安裝 Tesseract

PM> Install-Package TesseractOCR
PM> Install-Package TesseractOCR
$vbLabelText   $csharpLabel

安裝完成後,從GitHub上的 tessdata 儲存庫下載對應的訓練數據,並在您的.NET專案中設定檔。 tessdata 資料夾必須在運行時可訪問,通常需要設定此資料夾的完整路徑,或將其與可執行檔一起放在輸出目錄中。 .NET封裝器和語言檔案之間的版本不匹配經常導致初始化失敗,這是 Stack Overflow 討論中開發者經常遇到的問題。

此外,Tesseract 原生二進位檔案需要在任何執行應用程式的機器上安裝 Visual C++ 可再發行元件套件。 這種依賴關係可能會使部署變得複雜,尤其是在容器化環境或客戶端機器上,因為管理安裝可能並不簡單。

安裝IronOCR

PM> Install-Package IronOCR
PM> Install-Package IronOCR
$vbLabelText   $csharpLabel

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 1 - 安裝

IronOCR將所有內容打包到一個託管的.NET套件中,從而消除了配置的複雜性。 無需 C++ 執行時間環境,無需管理 tessdata 資料夾,也無需追蹤特定於平台的本機 DLL。 語言包會在需要時作為單獨的NuGet套件安裝,並與標準的.NET相依性管理整合。 Iron Software專門為需要 OCR 功能但又不想承擔基礎架構負擔的.NET開發人員設計了這種方法。 了解更多關於IronOCR入門的資訊

如何使用各個庫從圖像中提取文字?

基本的 OCR 工作流程,例如載入輸入影像和提取純文本,突顯了 Tesseract 和IronOCR之間顯著的 API 設計差異。 了解這些差異有助於.NET開發人員預測每種方法的學習曲線和實施工作量。 這兩個函式庫最終執行的是相同的核心功能,但開發者的體驗卻大相逕庭。

Tesseract 文字擷取範例

請考慮以下使用 Tesseract 引擎的影像處理工作流程。此程式碼演示了基本的 OCR 功能,用於從 PNG 檔案中提取文字:

using TesseractOCR;
using TesseractOCR.Enums;
// Initialize the engine with tessdata path and language
using var engine = new Engine(@"./tessdata", Language.English, EngineMode.Default);
// Load input image using Pix format
using var img = Pix.LoadFromFile("document.png");
// Process the image and create a page
using var page = engine.Process(img);
// Extract plain text from recognized text
Console.WriteLine(page.GetText());
using TesseractOCR;
using TesseractOCR.Enums;
// Initialize the engine with tessdata path and language
using var engine = new Engine(@"./tessdata", Language.English, EngineMode.Default);
// Load input image using Pix format
using var img = Pix.LoadFromFile("document.png");
// Process the image and create a page
using var page = engine.Process(img);
// Extract plain text from recognized text
Console.WriteLine(page.GetText());
$vbLabelText   $csharpLabel

這種方法需要管理 tessdata 資料夾路徑,確保檔案權限正確,並處理 Tesseract 引擎所需的 Pix 映像格式。如果訓練資料檔案缺失或不相容,引擎初始化可能會拋出異常。 記憶體使用需要格外注意,因為必須正確釋放 Tesseract 原生資源,以防止非託管程式碼造成記憶體洩漏。 對於遇到初始化問題的開發人員, IronOCR故障排除指南解釋了常見的 Tesseract 挑戰和解決方案。

IronOCR文字擷取範例

以下程式碼展示了IronOCR如何簡化相同的文字擷取任務:

using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process the input image
using var input = new OcrInput();
input.LoadImage("document.png");
// Read text with automatic optimization
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process the input image
using var input = new OcrInput();
input.LoadImage("document.png");
// Read text with automatic optimization
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

IronTesseract 類別提供了一個託管包裝器,可以自動處理記憶體使用情況。 OcrInput 類別可以直接從檔案路徑、位元組數組、流或 System.Drawing 物件接收影像文件,而無需格式轉換。 產生的 result 物件包含結構化數據,例如置信度分數、單字位置和段落邊界,所有這些對於建立複雜的文件處理管道都很有價值。 查看完整的圖像轉文字教學,了解更多進階功能。

輸入

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 2 - 範例影像輸入 @@----IMG-60-EG--@@

輸出

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 3 - 控制台輸出

哪些影像預處理選項可以提高OCR準確率?

現實世界中的文件很少能完好無損地送達。 掃描的檔案可能會旋轉,照片可能會有陰影,傳真的 PDF 檔案經常會出現雜訊和失真。 影像預處理能力直接影響生產環境中的 OCR 準確性,也是使用 Tesseract 原生功能與商業 OCR 解決方案之間最顯著的差異之一。

Tesseract 預處理局限性

Tesseract 引擎的設計目的是處理乾淨、高解析度且文字方向正確的圖像檔案。 處理旋轉或有雜訊的影像時,OCR 引擎經常會傳回亂碼輸出或完全無法辨識文字。 解決這些影像品質問題需要 ImageMagick、OpenCV 等外部工具,或自訂預處理程式碼,這些程式碼必須在將影像傳遞給 OCR 引擎之前運行。

這種預處理開銷會顯著增加.NET開發時間。每種文件類型可能需要不同的校正程序,而針對各種輸入調整這些管道以獲得最佳結果本身就是一個獨立的項目。 低估這項工作的團隊往往會發現,Tesseract 的"免費"成本會被數週的預處理工作所抵消。

IronOCR內建影像預處理

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("skewed-scan.png");
// Apply automatic corrections for high accuracy
input.Deskew();  // Correct skew on rotated images
input.DeNoise(); // Remove digital noise
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("skewed-scan.png");
// Apply automatic corrections for high accuracy
input.Deskew();  // Correct skew on rotated images
input.DeNoise(); // Remove digital noise
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

IronOCR支援影像校正濾鏡,可自動解決常見的文件品質問題。 Deskew() 方法透過偵測文字行角度並應用補償旋轉來糾正傾斜。 DeNoise() 方法可以消除掃描或數位雜訊中的偽影,否則這些偽影或雜訊會幹擾文字辨識。 其他濾鏡包括 EnhanceResolution(),用於改善低 DPI 影像;Contrast(),用於恢復褪色文字;以及 Invert(),用於處理深色背景上的淺色文件。 這些內建的影像預處理工具在大多數文件處理場景中消除了對外部影像處理庫的需求。

輸入

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 4 - 範例輸入@@----IMG-62-EG--@@

輸出

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 5 - 傾斜的控制台輸出

每個庫支援哪些圖像格式?

文件處理工作流程會遇到各種格式的影像檔案:從高解析度掃描件到行動相機拍攝的照片,再到傳統的傳真件。 原生格式支援減少了預處理程式碼,並消除了可能降低 OCR 準確性的轉換錯誤。

Tesseract 格式要求

Tesseract 的底層 Leptonica 庫內部使用 PIX 格式影像。 雖然.NET封裝程式可以自動處理一些轉換,但像多頁 TIFF 或 PDF 文件這樣的複雜影像格式需要額外的處理,而且通常需要外部函式庫。 .NET開發人員經常遇到將 System.Drawing 物件或 Stream 來源轉換為 Tesseract 引擎期望的格式的問題,尤其是在處理來自 Web 應用程式或資料庫 blob 儲存的映像時。

多幀 GIF 和多頁 TIFF 需要手動遍歷幀,這為原本簡單的文字擷取任務增加了樣板程式碼。

IronOCR格式靈活性

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load various image formats directly
input.LoadImage("photo.jpg");
input.LoadImage("screenshot.png");
input.LoadImage("fax.tiff");
input.LoadPdf("scanned-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load various image formats directly
input.LoadImage("photo.jpg");
input.LoadImage("screenshot.png");
input.LoadImage("fax.tiff");
input.LoadPdf("scanned-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

IronOCR支援所有主流影像格式,包括 JPG、PNG、GIF、TIFF、BMP 和 WebP。該程式庫可自動處理多頁 TIFF 和 GIF 文件,將每一幀作為單獨的頁面進行處理。 對於文件數位化,圖書館直接處理 PDF 文件輸入——從掃描頁面中提取文本,而無需單獨的 PDF 處理庫或圖像轉換步驟。

輸出

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 6 - 多圖控制台輸出

如何設定多語言OCR處理?

全球.NET應用程式必須能夠識別多種語言的文本,包括阿拉伯語、中文、日語和韓語等非拉丁字母文字。 語言配置會影響 OCR 的準確性以及.NET應用程式的部署複雜性。

Tesseract 語言配置

using TesseractOCR;
using TesseractOCR.Enums;
// Requires downloading fra.traineddata to tessdata folder
using var engine = new Engine(@"./tessdata", Language.French, EngineMode.Default);
using TesseractOCR;
using TesseractOCR.Enums;
// Requires downloading fra.traineddata to tessdata folder
using var engine = new Engine(@"./tessdata", Language.French, EngineMode.Default);
$vbLabelText   $csharpLabel

每種語言都需要從Tesseract GitHub儲存庫下載對應的 .traineddata 文件,並將其放置在正確的 tessdata 資料夾中。 對於多語言文檔,您可以在 engine 初始化期間指定多種語言。 在開發、測試和生產環境中管理這些語言文件,並確保所有部署目標在輸出目錄中都有正確的版本,這增加了操作複雜性,而且隨著語言需求的增長,這種複雜性還會加劇。

IronOCR語言包配置

using IronOcr;
var ocr = new IronTesseract();
// Install IronOcr.Languages.French NuGet package first
ocr.Language = OcrLanguage.French;
// Process multi-language documents
ocr.AddSecondaryLanguage(OcrLanguage.German);
using IronOcr;
var ocr = new IronTesseract();
// Install IronOcr.Languages.French NuGet package first
ocr.Language = OcrLanguage.French;
// Process multi-language documents
ocr.AddSecondaryLanguage(OcrLanguage.German);
$vbLabelText   $csharpLabel

IronOCR將語言包作為NuGet包分發,並與標準的.NET相依性管理工具整合。 該庫支援127 種以上的語言,包括專門的手寫體和特定腳本變體,能夠優雅地處理多語言文件。 建置過程中的套件還原可確保所有必要的語言檔案自動部署,無需手動檔案管理或版本控制。

跨平台部署需要考慮哪些因素?

現代.NET開發面向 Windows、Linux、macOS 以及 Azure 和 AWS 等雲端環境。 OCR程式庫相容性對.NET應用程式的部署複雜性和運作維度有顯著影響。

Tesseract平台挑戰

Tesseract .NET封裝實作依賴於為特定平台編譯的本機 C++ 函式庫。 Windows、Linux 和 macOS 之間的 DLL(共用程式庫)檔案有所不同,32 位元和 64 位元架構之間的 DLL 檔案也有所不同。 部署到 Linux 需要與 Windows 不同的二進位文件,並且需要在部署環境中配置正確的庫路徑。

雲端部署帶來了額外的挑戰。 Azure 應用程式服務、AWS Lambda 和容器化環境可能缺少原生 Tesseract 所需的 Visual C++ 執行時間環境。 在 Docker 容器或無伺服器函數中安裝這些依賴項會增加建置管道的複雜度並增加映像大小。 許多.NET開發人員都曾經遇到過這樣的情況:當原生依賴項沒有正確打包時,部署就會失敗,而這些相依性在本機 Visual Studio 開發中卻運作良好。

IronOCR跨平台一致性

IronOCR作為一個純粹的託管.NET庫運行,無需管理任何外部本機依賴項。 同一個NuGet套件可以在 Windows、macOS、Linux、 Azure 應用程式服務AWS LambdaDocker 容器中穩定運作。 這種架構極大地簡化了 CI/CD 管道,使您能夠在本地建置並可靠地部署到生產環境,而無需進行特定於平台的配置調整。

不同圖書館的OCR結果資料有何異同?

除了純文字擷取之外,結構化 OCR 輸出還支援高階文件處理工作流程。 了解每個程式庫提供哪些資料有助於架構師為其.NET應用程式設計合適的後處理邏輯。

Tesseract 結果訪問

using var page = engine.Process(img);
// Basic OCR text output
string text = page.Text;
// Confidence score (mean across all recognized text)
float confidence = page.GetMeanConfidence();
using var page = engine.Process(img);
// Basic OCR text output
string text = page.Text;
// Confidence score (mean across all recognized text)
float confidence = page.GetMeanConfidence();
$vbLabelText   $csharpLabel

Tesseract 提供識別出的文字和整體置信度評分。 要取得更細粒度的數據,例如單字的位置或每個字元的置信度,需要額外的 API 呼叫和仔細遍歷結果結構。 API介面功能齊全,但缺少生產文件管道通常需要的分層結果模型。

IronOCR結構化結果及信賴度評分

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("document.png");
var result = ocr.Read(input);
// Full text extraction
Console.WriteLine(result.Text);
// Iterate through structured elements with confidence scores
foreach (var page in result.Pages)
{
    foreach (var paragraph in page.Paragraphs)
    {
        Console.WriteLine($"Paragraph: {paragraph.Text}");
        Console.WriteLine($"Confidence: {paragraph.Confidence}%");
    }
}
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("document.png");
var result = ocr.Read(input);
// Full text extraction
Console.WriteLine(result.Text);
// Iterate through structured elements with confidence scores
foreach (var page in result.Pages)
{
    foreach (var paragraph in page.Paragraphs)
    {
        Console.WriteLine($"Paragraph: {paragraph.Text}");
        Console.WriteLine($"Confidence: {paragraph.Confidence}%");
    }
}
$vbLabelText   $csharpLabel

OcrResult 類別提供對頁面、段落、行、單字和單字的分層存取。 每個元素都包含邊界框座標和置信度分數,使.NET應用程式能夠突出顯示識別的文字區域、從特定區域提取內容、驗證識別品質或標記置信度低的部分以供人工審核。 IronOCR還可以將結果直接匯出為可搜尋的 PDFhOCR/HTML 格式,以便進行存檔和搜尋索引。

輸出

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖像 7 - 置信度評分輸出

專案應該選擇哪種OCR解決方案?

正確的選擇取決於專案限制、文件影像品質要求以及長期維護考慮因素。 這兩個庫沒有絕對的優劣之分——最終的選擇取決於該工具是否符合您的特定需求。

Tesseract 何時最合適

Tesseract 在特定場景下表現良好,其優缺點可以接受:

  • 預算限制要求採用開源的 Apache 2.0 授權解決方案。
  • 僅處理乾淨、高品質的數位文件(原生數位 PDF、螢幕截圖) 開發團隊擁有 C++ 互通性和原生庫管理的經驗 專案需求僅限於基本的OCR文字擷取,不涉及進階功能。 目標部署環境是一個受控環境,可以在其中一致地管理依賴項。

IronOCR帶來更佳效果

IronOCR是生產工作負載的更佳選擇:

  • 建立生產級.NET應用程序,其中 OCR 準確性會影響業務成果
  • 處理各種不同品質的文檔,包括掃描件、照片、傳真件和手機拍攝的照片
  • 在多個平台或雲端環境中部署,以確保一致性。
  • 需要專業的技術支持,包括定期修復漏洞和更新功能。
  • 開發時間表不允許我們應對配置和預處理方面的挑戰
  • 要求包括PDF檔案處理條碼和二維碼讀取,或結構化結果資料處理

對於先前建置過基於 Tesseract 的管道並且正在評估遷移的團隊, IronOCR遷移指南涵蓋了關鍵的 API 差異和過渡步驟。

下一步計劃是什麼?

Google Tesseract 提供了一個強大的開源 OCR 基礎架構,對於特定用例來說仍然是一個合理的選擇。 然而,其配置要求和有限的影像預處理能力為.NET在生產應用程式中的開發帶來了巨大的開銷。 解決安裝問題、建立預處理管道和管理跨平台部署所花費的時間,往往超過了避免商業許可所節省的費用。

IronOCR基於 Tesseract 引擎構建,同時消除了安裝障礙,增加了影像校正濾鏡,並提供了生產.NET專案所依賴的專業支援。 對於尋求可靠 OCR 效能且設定最少的.NET開發人員來說, IronOCR開箱即用,可處理現實世界文件的複雜性。

探索IronOCR授權選項,找到適合您的.NET專案的方案,或開始免費試用,用您自己的文件評估該程式庫。

Tesseract C# vs IronOCR: .NET中 OCR 實現的完整指南:圖 8 - 許可

請注意Tesseract 是其各自所有者的註冊商標。 本網站與 Tesseract 無任何關聯,也未獲得 Tesseract 的認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

Tesseract C# 和 IronOCR 有什麼不同?

Tesseract C# 是開源 Tesseract OCR 引擎的 .NET 封裝庫,其運作需手動管理 tessdata 檔案、依賴 Visual C++ 執行階段元件,並需搭配外部預處理流程。 IronOCR 是一款基於相同 Tesseract 引擎的商用 .NET OCR 程式庫,具備內建影像預處理功能、原生 PDF 支援、127 種以上透過 NuGet 發佈的語言套件,以及無需原生依賴項的完全受管 API。

如何在 C# .NET 專案中安裝 Tesseract OCR?

安裝 TesseractOCR NuGet 套件,然後從 tessdata GitHub 儲存庫下載適用的 .traineddata 語言檔案,並將其放置於執行時可存取的 tessdata 資料夾中。此外,每台目標電腦都需安裝 Visual C++ 再發行套件。IronOCR 將此流程簡化為單一的 `Install-Package IronOCR` 指令,無需額外依賴項。

IronOCR 能否直接處理 PDF 檔案?

是的,IronOCR 原生支援 PDF 輸入,可透過 `OcrInput.LoadPdf()` 進行。該程式庫能直接從掃描的 PDF 頁面中擷取文字,無需額外的 PDF 處理函式庫。Tesseract 則需搭配其他函式庫並手動進行影像擷取,才能達到相同效果。

IronOCR 是否支援 Linux 和 macOS?

是的,IronOCR 作為完全受管制的 .NET 程式庫運行,無需任何原生依賴項,因此同一個 NuGet 套件可在 Windows、Linux、macOS、Azure App Services、AWS Lambda 及 Docker 容器上運作,無需進行平台專屬的配置。

Tesseract 與 IronOCR 在影像預處理方面有何差異?

Tesseract 專為清晰且方向正確的圖像設計,處理雜訊或傾斜的文件時需搭配 ImageMagick 或 OpenCV 等外部工具進行預處理。IronOCR 內建多種濾鏡:Deskew()、DeNoise()、EnhanceResolution()、Sharpen()、Contrast() 及 Invert(),無需額外函式庫即可處理常見的文件品質問題。

如何透過 IronOCR 添加多語言支援?

安裝相關的 IronOcr.Languages.{LanguageName} NuGet 套件,然後設定 `ocr.Language = OcrLanguage.French`,並呼叫 `ocr.AddSecondaryLanguage(OcrLanguage.German)` 以處理多語言文件。語言檔案會透過 NuGet 套件還原自動部署,這與 Tesseract 需要手動管理 .traineddata 檔案的情況不同。

除了純文字之外,IronOCR 還會返回哪些結構化資料?

IronOCR 的 OcrResult 物件提供對頁面、段落、行、單字及字元的階層式存取。每個元素皆包含邊界框座標與信心分數。IronOCR 亦可將結果匯出為可搜尋的 PDF 及 hOCR/HTML 格式,以供歸檔與搜尋索引之用。

Tesseract C# 是否可免費用於商業用途?

是的,Tesseract OCR 引擎採用 Apache 2.0 授權,可免費用於商業用途。IronOCR 則為需付費授權的商業產品,但提供免費試用版供評估。

何時應選擇 Tesseract 而非 IronOCR?

當您的預算需要免費的開源解決方案、文件為乾淨且高品質的數位檔案、團隊具備 C++ 互通經驗,且部署環境為可一致管理原生依賴項的受控環境時,請選擇 Tesseract。

IronOCR 是否支援 BarCode 與 QR 碼的讀取?

是的,IronOCR 內建 BarCode 與 QR 碼讀取功能,而 Tesseract 若未搭配額外函式庫則無法提供此功能。

Kannaopat Udonpant
軟體工程師
在成為軟件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人實验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因為他直接向编写大部分 IronPDF 使用的代碼的開發者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代碼或文檔時,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我