{"library":"onnxruntime-extensions","title":"ONNX Runtime Extensions","description":"ONNX Runtime Extensions is a C/C++ library that extends the capabilities of ONNX models and inference with ONNX Runtime via Custom Operator ABIs. It provides a set of custom operators to support common pre- and post-processing tasks for vision, text, and audio models. The library supports multiple languages and platforms, including Python, Java, C#, and mobile platforms, and is currently at version 0.15.2, with a continuous release cadence.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install onnxruntime-extensions","pip install --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple/ onnxruntime-extensions"],"cli":null},"imports":["from onnxruntime_extensions import get_library_path","from onnxruntime_extensions import gen_processing_models","from onnxruntime_extensions import OrtPyFunction","from onnxruntime_extensions import PyOrtFunction","from onnxruntime_extensions import onnx_op"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import onnxruntime as ort\nfrom onnxruntime_extensions import get_library_path, gen_processing_models, OrtPyFunction\nfrom transformers import AutoTokenizer # pip install transformers\nimport numpy as np\n\n# 1. Register the custom operators library\nso = ort.SessionOptions()\nso.register_custom_ops_library(get_library_path())\n\n# 2. Convert a Hugging Face tokenizer to an ONNX processing model\ntry:\n    hf_tokenizer = AutoTokenizer.from_pretrained(\"bert-base-uncased\")\n    # gen_processing_models returns two models: pre-processing (index 0) and post-processing (index 1 if available)\n    tokenizer_onnx_model = OrtPyFunction(gen_processing_models(hf_tokenizer, pre_kwargs={})[0])\n\n    # 3. Prepare input and run inference with the ONNX tokenizer model\n    input_text = [\"Hello, ONNX Runtime Extensions!\"]\n    # The output from the tokenizer_onnx_model will be the tokenized IDs\n    input_ids = tokenizer_onnx_model(input_text)\n    \n    print(f\"Original Text: {input_text}\")\n    print(f\"Token IDs (first input): {input_ids}\")\n\n    # Example: Running a simple ONNX model with the custom ops library\n    # This part assumes you have an ONNX model (e.g., 'model.onnx')\n    # For a full example, you'd typically load your ML model here\n    # and connect its inputs/outputs with the tokenizer's outputs.\n    # For demonstration, we'll just show a dummy inference session.\n\n    # Dummy ONNX model (replace with your actual model path)\n    # Create a dummy ONNX model for demonstration if not available\n    # Example: import onnx; import onnx.helper; import onnx.numpy_helper\n    # graph_nodes = [onnx.helper.make_node('Identity', ['input'], ['output'])]\n    # graph_inputs = [onnx.helper.make_tensor_value_info('input', onnx.TensorProto.INT64, [1, 10])]\n    # graph_outputs = [onnx.helper.make_tensor_value_info('output', onnx.TensorProto.INT64, [1, 10])]\n    # graph = onnx.helper.make_graph(graph_nodes, 'dummy_graph', graph_inputs, graph_outputs)\n    # dummy_model = onnx.helper.make_model(graph, producer_name='dummy_model')\n    # onnx.save(dummy_model, 'dummy_model.onnx')\n\n    # Simulate using a real ONNX model\n    # Create a minimal ONNX model for demonstration. In a real scenario, this would be a pre-trained model.\n    # For this example, we'll just use the tokenized IDs as a dummy input.\n    \n    # If you have a .onnx model, you would do:\n    # sess = ort.InferenceSession(\"your_model.onnx\", so)\n    # model_outputs = sess.run(None, {\"model_input_name\": input_ids})\n    # print(f\"Model outputs: {model_outputs}\")\n\n    print(\"Quickstart demonstrated converting a Hugging Face tokenizer to ONNX custom operators.\")\nexcept ImportError:\n    print(\"Please install 'transformers' for the full quickstart example: pip install transformers\")\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates the core functionality of onnxruntime-extensions: converting a Hugging Face tokenizer into an ONNX graph with custom operators, and preparing an ONNX Runtime session to use these extensions. It showcases how to set up `SessionOptions` to register the custom operations library and then use `gen_processing_models` to create an ONNX representation of a tokenizer. The resulting ONNX tokenizer model can then be used for pre-processing text data.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.13.0","pypi_latest":"0.15.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":45,"avg_install_s":2.1,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"37.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"26M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"39.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"28M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"31.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":1.8,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"20M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"onnxruntime-extensions","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"20M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.01,"mem_mb":0.1,"disk_size":"36.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"--index-url","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":2.6,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"onnxruntime-extensions","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.01,"mem_mb":0.1,"disk_size":"34M"}]}}