Преобразование файлов 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.

  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.

Понимание кода преобразования PDF в XML на Python

Ниже представлено краткое руководство по ключевым разделам скрипта.

  1. Настройка конфигурации - создает объект Configuration и внедряет ваш client_id и client_secret.
config = Configuration()
config.api_key['client_id'] = client_id
config.api_key['client_secret'] = client_secret
  1. BarcodeApi Initialization - создает клиент 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 с помощью 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 ""
  1. Сохранение вывода - записывает дерево 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 предлагает несколько настраиваемых параметров:

  • Custom Base URL – полезно для развертываний в частном облаке.
# config.host = "https://api.yourdomain.com"
  • Настройки тайм‑аута — настройте тайм‑аут HTTP для больших PDF‑файлов.
config.timeout = 120  # seconds
  • Error Handling - захватите 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?
Повторно используйте экземпляр BarcodeApi, увеличьте тайм‑аут HTTP для больших файлов и включите сжатие ответов. Для очень больших PDF рассматривайте обработку страниц пакетами.

Как SDK обрабатывает ошибки при конвертации PDF в XML?
Все взаимодействия с API вызывают ApiException в случае неудачи. Проверьте e.status и e.reason, чтобы решить, повторять запрос, вести журнал или прервать. Подробные коды ошибок перечислены в документации.

Существует ли сравнение Aspose.BarCode с другими библиотеками преобразования PDF в XML на Python?
Aspose.BarCode предлагает встроенное распознавание штрих‑кодов и прямую генерацию XML, чего не хватает многим общим PDF‑парсерам. Его облачная архитектура также обеспечивает преимущества масштабируемости по сравнению с библиотеками, работающими только локально.

Читать далее