將 PDF 檔案轉換為結構化的 XML 是在需要提取條碼資料以供後續處理時的常見需求。 Aspose.BarCode Cloud SDK for Python 提供強大的 API,使得在 Python 中將 PDF 轉換為 XML 變得簡單且具可擴展性。本指南將帶您完成設定、完整的工作範例、效能考量以及錯誤處理,讓您能將可靠的資料提取整合到您的應用程式中。

完整程式碼範例:PDF 轉 XML(Python)

以下腳本示範如何將 PDF 發送至 Aspose.BarCode Cloud,辨識條碼,並將結果寫入 XML 檔案。

import os
import xml.etree.ElementTree as ET

import asposebarcodecloud
from asposebarcodecloud import Configuration, BarcodeApi
from asposebarcodecloud.rest import ApiException

# ----------------------------------------------------------------------
# Configuration – replace with your own Aspose Cloud credentials
# ----------------------------------------------------------------------
client_id = os.getenv("ASPOSE_CLIENT_ID", "YOUR_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET", "YOUR_CLIENT_SECRET")

config = Configuration()
config.api_key['client_id'] = client_id
config.api_key['client_secret'] = client_secret
# Optional: set a custom base URL if needed
# config.host = "https://api.aspose.cloud"

barcode_api = BarcodeApi(asposebarcodecloud.ApiClient(config))

# ----------------------------------------------------------------------
# Input / Output files
# ----------------------------------------------------------------------
input_pdf_path = "input.pdf"
output_xml_path = "output.xml"

def recognize_barcodes_from_pdf(pdf_path):
    """Send PDF to Aspose.BarCode Cloud and return recognized barcodes."""
    with open(pdf_path, "rb") as pdf_file:
        try:
            # The API automatically detects the file type; we explicitly set it to PDF.
            # The response is a list of RecognizedBarcode objects.
            result = barcode_api.post_barcode_recognize_from_url_or_content(
                file=pdf_file,
                type="pdf"
            )
            return result.barcodes if result else []
        except ApiException as e:
            print(f"API call failed: {e}")
            return []

def build_xml_from_barcodes(barcodes):
    """Create an XML document from a list of RecognizedBarcode objects."""
    root = ET.Element("Barcodes")
    for barcode in barcodes:
        barcode_el = ET.SubElement(root, "Barcode")
        ET.SubElement(barcode_el, "CodeText").text = barcode.code_text or ""
        ET.SubElement(barcode_el, "Type").text = barcode.type or ""
        # Region information (optional)
        if barcode.region:
            region_el = ET.SubElement(barcode_el, "Region")
            ET.SubElement(region_el, "X").text = str(barcode.region.x)
            ET.SubElement(region_el, "Y").text = str(barcode.region.y)
            ET.SubElement(region_el, "Width").text = str(barcode.region.width)
            ET.SubElement(region_el, "Height").text = str(barcode.region.height)
    return ET.ElementTree(root)

def main():
    barcodes = recognize_barcodes_from_pdf(input_pdf_path)
    if not barcodes:
        print("No barcodes were detected.")
        return

xml_tree = build_xml_from_barcodes(barcodes)
    xml_tree.write(output_xml_path, encoding="utf-8", xml_declaration=True)
    print(f"XML conversion completed. Output saved to '{output_xml_path}'.")

if __name__ == "__main__":
    main()

注意: 此程式碼範例展示了核心功能。在將其用於您的專案之前,請確保更新所有檔案路徑和設定值以符合實際環境,驗證所有必要的相依項目已正確安裝,並在開發環境中徹底測試。如果遇到任何問題,請參閱官方文件或聯繫支援團隊尋求協助。

使用 cURL 和 REST API 執行 PDF 到 XML 轉換

您可以透過直接呼叫 Aspose.BarCode Cloud REST endpoints,而無需編寫 Python 程式碼,即可達成相同的結果。

  1. 取得存取權杖 - 用您的認證取代佔位符。
curl -X POST "https://api.aspose.cloud/connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. 上傳 PDF - 使用前一步的令牌。
curl -X PUT "https://api.aspose.cloud/v3.0/barcode/recognize/pdf" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/pdf" \
  --data-binary @input.pdf \
  -o response.json
  1. 擷取條碼並產生 XML - 回應包含條碼資料,您可以將其傳遞給 XML 構建器或直接保存。
curl -X POST "https://api.aspose.cloud/v3.0/barcode/recognize/fromurlorcontent" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"pdf","file":"input.pdf"}' \
  -o barcodes.json
  1. 下載 XML 檔案(如果您已將 API 設定為返回 XML)。
curl -X GET "https://api.aspose.cloud/v3.0/barcode/recognize/xml/output.xml" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -o output.xml

欲取得參數與回應格式的完整清單,請參閱官方 API 文件。

了解 Python 中的 PDF 轉 XML 轉換程式碼

以下是對腳本關鍵部分的簡要說明。

  1. 配置設定 - 建立一個 Configuration 物件,並注入您的 client_id 和 client_secret。
config = Configuration()
config.api_key['client_id'] = client_id
config.api_key['client_secret'] = client_secret
  1. BarcodeApi 初始化 - 建立將與雲端服務通信的 API 客戶端。
barcode_api = BarcodeApi(asposebarcodecloud.ApiClient(config))
  1. 傳送 PDF - post_barcode_recognize_from_url_or_content 方法會傳送 PDF 位元組並指定檔案類型。
result = barcode_api.post_barcode_recognize_from_url_or_content(
    file=pdf_file,
    type="pdf"
)
  1. 建立 XML 文件 - 逐一遍歷每個 RecognizedBarcode 物件,並使用 xml.etree.ElementTree 建立結構化的 XML 樹。
root = ET.Element("Barcodes")
for barcode in barcodes:
    barcode_el = ET.SubElement(root, "Barcode")
    ET.SubElement(barcode_el, "CodeText").text = barcode.code_text or ""
    ET.SubElement(barcode_el, "Type").text = barcode.type or ""
  1. 儲存輸出 - 將 XML 樹寫入 output.xml,使用 UTF‑8 編碼並包含 XML 宣告。
xml_tree.write(output_xml_path, encoding="utf-8", xml_declaration=True)

這些步驟結合起來,使在 Python 中快速且可靠地將 PDF 轉換為 XML 成為可能,同時讓您完全掌控錯誤處理和效能調校。

準備環境

首先,透過 pip 安裝 SDK,並確保您已安裝 Python 3.7+。

pip install aspose-barcode-cloud

接下來,從官方發行頁面下載最新的套件: Download Aspose.BarCode Cloud SDK for Python.
確保已設定環境變數 ASPOSE_CLIENT_ID 和 ASPOSE_CLIENT_SECRET,或在腳本中將佔位符替換為實際的憑證。

微調選項與設定

雖然範例使用了預設設定,但 SDK 提供了多種可配置的選項:

  • 自訂基礎 URL - 適用於私有雲部署。
# config.host = "https://api.yourdomain.com"
  • Timeout Settings - 調整大型 PDF 的 HTTP 超時時間。
config.timeout = 120  # seconds
  • 錯誤處理 - 捕獲 ApiException 以取得 HTTP 狀態碼和錯誤訊息,從而實現穩健的重試邏輯。
except ApiException as e:
    print(f"API call failed: {e}")

請參閱 API 參考 以取得完整的參數清單。

結論

在 Python 中使用 Aspose.BarCode Cloud SDK for Python 進行 PDF 轉 XML 轉換將變得簡化。透過遵循上述步驟設定憑證、執行提供的程式碼,並套用以效能為導向的選項,您即可從 PDF 中提取條碼資料,並產生可供下游系統使用的乾淨 XML 輸出。此 SDK 為商業產品;定價資訊可在產品頁面上取得,您亦可從臨時授權頁面取得評估用的臨時授權。立即開始整合,提升資料提取工作流程的速度。

常見問題

如何在無頭伺服器上使用 Python 執行 PDF 轉 XML 轉換?
此函式庫完全透過 API 呼叫運作,因此您可以在任何沒有圖形介面的伺服器上執行腳本。只需確保已設定您的 Aspose 憑證的環境變數。

什麼是提升 Python 中 PDF 轉 XML 轉換效能的建議方法?
Reuse the BarcodeApi instance, increase the HTTP timeout for large files, and enable response compression. For massive PDFs, consider processing pages in batches.

SDK 在 PDF 轉換為 XML 時如何處理錯誤?
所有 API 呼叫在失敗時都會拋出 ApiException。檢查 e.status 和 e.reason 以決定是重試、記錄還是中止。詳細的錯誤代碼列於文件。

是否有 Aspose.BarCode 與其他 Python 中的 PDF 轉 XML 轉換庫的比較?
Aspose.BarCode 提供內建的條碼識別和直接的 XML 生成,這是許多通用 PDF 解析器所缺乏的。其基於雲端的架構也相較於僅本地的庫提供了可擴展性的優勢。

閱讀更多