Skip to main content

pygexml

A minimal Python wrapper around the PAGE-XML format for OCR output. Can also import ALTO-XML.

pygexml checks, tests and docs pypi release API docs online

Installation

pip install pygexml

Requires Python 3.12+.

Usage

from pygexml import Page

page = Page.from_xml_file("docs/xml_file.xml")

for line in page.all_text():
    print(line)

All dataclasses are serializable with to_dict/from_dict and to_json/from_json via dataclasses-json.

Data model

Class Import from
Page pygexml
Page, TextRegion, TextLine, Coords pygexml.page
Point, Box, Polygon pygexml.geometry

Page, TextRegion and TextLine each expose all_text() and all_words() iterators. On Page, these respect the PAGE-XML reading order if present. Lookups by ID are available via lookup_region() and lookup_textline(). The reading order is also accessible directly via regions_ordered().

Refer to the online API docs for details.

Hypothesis strategies

The pygexml.strategies module provides Hypothesis strategies for all pygexml types, ready to use in property-based tests - including downstream projects:

from hypothesis import given
from pygexml.strategies import st_pages

@given(st_pages())
def test_my_page_processing(page):
    assert process(page) is not None

Refer to the pygexml.strategies API docs for details.

Development

pip install ".[dev,test,docs]"

black pygexml test          # format
mypy pygexml test           # type check
pyright pygexml test        # type check
pytest -v                   # tests
pdoc -o .api_docs ./pygexml # API docs

CI runs on Python 3.12, 3.13 and 3.14. API documentation is published to GitHub Pages on every push to main.

Contributing

Bug reports, feature requests and pull requests are welcome. Feel free to open draft pull requests early to invite discussion and collaboration.

Please note that this project has a Code of Conduct.

Copyright and License

Copyright (c) 2026 Mirko Westermeier, Katharina Dietz (SCDH, University of Münster)

Released under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygexml-0.4.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygexml-0.4.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file pygexml-0.4.0.tar.gz.

File metadata

  • Download URL: pygexml-0.4.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pygexml-0.4.0.tar.gz
Algorithm Hash digest
SHA256 cf8ca7976ffdd54dfc54da66bc60fec3eb0b7aa6c7057198b98c8ffd6641db56
MD5 4831d38f887c14a023192dd8dedb90af
BLAKE2b-256 ec0294d4fab1c56d3aed37e989d3b5195a261175d5555256414346c33f7f7ed8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygexml-0.4.0.tar.gz:

Publisher: publish.yml on SCDH/pygexml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygexml-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pygexml-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pygexml-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e88e421b0bd5c5491836df42fbafce1fb52432c3509046f86e7e25ca11b1947
MD5 77606e15cc03fc00cf1deff7b1f01f8d
BLAKE2b-256 2caaece281bdb63fbda598205fda8b9bb53024f42904f5dbc8c9a5f6aa0ab3b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygexml-0.4.0-py3-none-any.whl:

Publisher: publish.yml on SCDH/pygexml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page