Перетворення файлів PDF у структурований XML часто є необхідністю, коли потрібно витягти дані штрих‑коду для подальшої обробки. Aspose.BarCode Cloud SDK for Python надає потужний API, який робить конвертацію PDF у XML у Python простою та масштабованою. Цей посібник крок за кроком проводить вас через налаштування, повний робочий приклад, питання продуктивності та обробку помилок, щоб ви могли інтегрувати надійне вилучення даних у свої додатки.
Повний приклад коду: конвертація 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()
Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили всі шляхи до файлів та значення конфігурації відповідно до вашого реального середовища, перевірте, чи всі необхідні залежності встановлені правильно, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь-якими проблемами, будь ласка, зверніться до офіційної документації або до команди підтримки за допомогою.
Виконання перетворення PDF у XML за допомогою cURL та REST API
Ви можете отримати той самий результат без написання коду Python, викликавши REST‑концеві точки Aspose.BarCode Cloud безпосередньо.
- Отримайте токен доступу - замініть заповнювачі вашими обліковими даними.
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"
- Завантажте 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
- Витягнути штрихкоди та створити 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
- Завантажте 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.
Розуміння коду конвертації PDF у XML у Python
Нижче наведено стислий огляд ключових розділів скрипту.
- Налаштування конфігурації - створює об’єкт
Configurationі впроваджує вашіclient_idтаclient_secret.
config = Configuration()
config.api_key['client_id'] = client_id
config.api_key['client_secret'] = client_secret
- BarcodeApi Initialization - створює клієнт API, який буде спілкуватися з хмарним сервісом.
barcode_api = BarcodeApi(asposebarcodecloud.ApiClient(config))
- Надсилання PDF - метод
post_barcode_recognize_from_url_or_contentнадсилає байти PDF та вказує тип файлу.
result = barcode_api.post_barcode_recognize_from_url_or_content(
file=pdf_file,
type="pdf"
)
- Створення XML-документа - перебирає кожен об’єкт
RecognizedBarcodeі створює структуроване дерево XML за допомогоюxml.etree.ElementTree.
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 ""
- Збереження виводу - записує дерево XML у
output.xmlз кодуванням UTF‑8 та декларацією XML.
xml_tree.write(output_xml_path, encoding="utf-8", xml_declaration=True)
Ці кроки разом забезпечують швидке та надійне перетворення PDF у XML у Python, надаючи вам повний контроль над обробкою помилок та налаштуванням продуктивності.
Підготовка середовища
Спочатку встановіть SDK за допомогою pip і переконайтеся, що у вас є Python 3.7+.
pip install aspose-barcode-cloud
Далі завантажте останній пакет з офіційної сторінки випуску: Завантажити Aspose.BarCode Cloud SDK for Python.
Переконайтеся, що ваші змінні середовища ASPOSE_CLIENT_ID і ASPOSE_CLIENT_SECRET встановлені, або замініть заповнювачі у скрипті на ваші фактичні облікові дані.
Параметри та налаштування тонкого налаштування
Хоча приклад використовує налаштування за замовчуванням, SDK пропонує кілька налаштовуваних параметрів:
- Користувацька базова URL-адреса - корисно для приватних хмарних розгортань.
# config.host = "https://api.yourdomain.com"
- Налаштування тайм-ауту - налаштуйте тайм-аут HTTP для великих PDF.
config.timeout = 120 # seconds
- Обробка помилок - захоплюйте
ApiException, щоб отримати коди стану HTTP та повідомлення про помилки, забезпечуючи надійну логіку повторних спроб.
except ApiException as e:
print(f"API call failed: {e}")
Зверніться до довідка API для повного переліку параметрів.
Висновок
Конвертація PDF у XML у Python стає спрощеним процесом, коли ви використовуєте Aspose.BarCode Cloud SDK for Python. Дотримуючись наведених вище кроків, налаштовуючи облікові дані, запускаючи наданий код і застосовуючи орієнтовані на продуктивність параметри, ви можете витягти дані штрих‑кодів з PDF‑файлів і створити чистий XML‑вихід, готовий для подальших систем. SDK є комерційним продуктом; деталі ціноутворення доступні на сторінці продукту, а тимчасову ліцензію для оцінки можна отримати на сторінці тимчасової ліцензії. Почніть інтегрувати сьогодні і прискорте ваші процеси витягнення даних.
Поширені запитання
Як виконати конвертацію PDF у XML за допомогою Python на безголовому сервері?
Бібліотека працює повністю через API‑виклики, тому ви можете запускати скрипт на будь‑якому сервері без графічного інтерфейсу. Просто переконайтеся, що змінні середовища для ваших облікових даних Aspose встановлені.
Який рекомендований спосіб покращити продуктивність конвертації PDF у XML у Python?
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 та іншими бібліотеками конвертації PDF у XML у Python?
Aspose.BarCode пропонує вбудоване розпізнавання штрих‑кодів та пряме генерування XML, чого бракує багатьом загальним PDF‑парсерам. Його хмарна архітектура також забезпечує переваги масштабованості порівняно з бібліотеками, що працюють лише локально.