Skip to main content

C-backed PDF to structured JSON extractor.

Project description

PyMuPDF4LLM-C

fast PDF extractor in C using MuPDF. Outputs structured JSON with layout metadata. ~300 pages/second.

primarily intended for use with python bindings.


what this is

a PDF extractor in C using MuPDF, inspired by pymupdf4llm. i took many of its heuristics and approach but rewrote it in C for speed, then bound it to Python so it's easy to use.

outputs JSON for every block: text, type, bounding box, font metrics, tables. you get the raw data to process however you need.

speed: ~300 pages/second on CPU. 1 million pages in ~55 minutes.


the problem

most extractors give you raw text (fast but useless) or over-engineered solutions (slow, opinionated, not built for what you need). you want structured data. you want to know where things are, what they are, whether they're headers or body text. and you want this fast if you're processing large volumes.


what you get

JSON with geometry, typography, and structure. use bounding boxes to find natural document boundaries. detect headers and footers by coordinates. reconstruct tables properly. you decide what to do with it.

heading with accurate coordinates and styling
{
  "type": "heading",
  "bbox": [111.80, 187.53, 509.10, 217.56],
  "font_size": 32.0,
  "length": 25,
  "level": 1,
  "spans": [
    {
      "text": "Introduction",
      "font_size": 32.0,
      "bold": false,
      "italic": false,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": false,
      "uri": false
    }
  ]
}
paragraph with mixed styling (bold, italic, links)
{
  "type": "text",
  "bbox": [72.03, 140.5, 542.7, 200.2],
  "font_size": 12.0,
  "length": 189,
  "lines": 4,
  "spans": [
    {
      "text": "Cloud technology enables ",
      "font_size": 12.0,
      "bold": false,
      "italic": false,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": false,
      "uri": false
    },
    {
      "text": "multi-tenant",
      "font_size": 12.0,
      "bold": true,
      "italic": true,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": true,
      "uri": "https://aws.amazon.com/multi-tenant"
    },
    {
      "text": " services that scale efficiently across infrastructure.",
      "font_size": 12.0,
      "bold": false,
      "italic": false,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": false,
      "uri": false
    }
  ]
}
bulleted and nested list with indentation
{
  "type": "list",
  "bbox": [40.44, 199.44, 240.01, 345.78],
  "font_size": 11.04,
  "length": 89,
  "spans": [],
  "items": [
    {
      "spans": [{"text": "Logical isolation boundaries", "font_size": 11.04, "bold": false, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}],
      "list_type": "bulleted",
      "indent": 0,
      "prefix": false
    },
    {
      "spans": [{"text": "Data center architecture", "font_size": 11.04, "bold": false, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}],
      "list_type": "bulleted",
      "indent": 1,
      "prefix": false
    },
    {
      "spans": [{"text": "Nested list item", "font_size": 11.04, "bold": false, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}],
      "list_type": "bulleted",
      "indent": 2,
      "prefix": false
    }
  ]
}
table with detected structure
{
  "type": "table",
  "bbox": [72.0, 220.0, 523.5, 400.0],
  "font_size": 12.0,
  "length": 256,
  "row_count": 3,
  "col_count": 2,
  "cell_count": 2,
  "spans": [],
  "rows": [
    {
      "bbox": [72.0, 220.0, 523.5, 250.0],
      "cells": [
        {
          "bbox": [72.0, 220.0, 297.75, 250.0],
          "spans": [{"text": "Feature", "font_size": 12.0, "bold": true, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}]
        },
        {
          "bbox": [297.75, 220.0, 523.5, 250.0],
          "spans": [{"text": "Speed (pages/sec)", "font_size": 12.0, "bold": true, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}]
        }
      ]
    },
    {
      "bbox": [72.0, 250.0, 523.5, 280.0],
      "cells": [
        {
          "bbox": [72.0, 250.0, 297.75, 280.0],
          "spans": [{"text": "pymupdf4llm-C", "font_size": 12.0, "bold": false, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}]
        },
        {
          "bbox": [297.75, 250.0, 523.5, 280.0],
          "spans": [{"text": "~300", "font_size": 12.0, "bold": false, "italic": false, "monospace": false, "strikeout": false, "superscript": false, "subscript": false, "link": false, "uri": false}]
        }
      ]
    }
  ]
}

instead of splitting on word count and getting mid-sentence breaks, you use layout to chunk semantically.

note that a span represents a logical group of styling. in most blocks, it is likely that there is only one span. some information in the top level JSON may be inaccurate and/or redundant.


comparison

Tool Speed (pps) Quality Tables JSON Use Case
pymupdf4llm-C ~300 Good Yes Structured High volume, full control
pymupdf4llm ~10 Good Yes Markdown General
pymupdf ~250 Subpar No Text only Basic extraction
marker ~0.5-1 Excellent Yes Markdown Maximum accuracy
docling ~2-5 Excellent Yes JSON Document intelligence
PaddleOCR ~20-50 Good (OCR) Yes Text Scanned documents

tradeoff: speed and control vs automatic extraction. marker and docling give higher fidelity if you have time.


what it handles well

  • millions of pages, fast
  • custom parsing logic; you own the rules
  • document archives, chunking strategies, any structured extraction
  • CPU only; no expensive inference
  • iterating on parsing logic without waiting hours

what it doesn't handle

  • scanned or image-heavy PDFs (no OCR)
  • 99%+ accuracy on edge cases; trades precision for speed
  • figures or image extraction

installation

pip install pymupdf4llm-c

i use uv, you can prefix with uv or whatever you want.

wheels for Python 3.10–3.13 on macOS (ARM/x64) and Linux (glibc > 2.11). no Windows; see BUILD.md to compile.


usage

Python

basic

from pymupdf4llm_c import to_json

output_file = to_json("example.pdf")
print(f"Extracted to: {output_file}")

collect in memory

pages = to_json("report.pdf", collect=True)

for page_obj in pages:
    blocks = page_obj.get("data", [])
    for block in blocks:
        print(f"{block.get('type')}: {block.get('text', '')}")

large files (streaming)

from pymupdf4llm_c import iterate_json_pages

for page_blocks in iterate_json_pages("large.pdf"):
    for block in page_blocks:
        print(f"Block type: {block['type']}")

per-page files

json_files = to_json(pdf_path, output_dir="output_json")

command-line

python -m pymupdf4llm_c.main input.pdf [output_dir]

output structure

each page is a JSON array of blocks. every block has:

  • type: block type (text, heading, paragraph, list, table, code)
  • bbox: [x0, y0, x1, y1] bounding box coordinates
  • font_size: font size in points (average for multi-span blocks)
  • length: character count
  • spans: array of styled text spans with style flags (bold, italic, monospace, etc.)

block types

text/paragraph/code blocks:

{
  "type": "text",
  "bbox": [72.03, 132.66, 542.7, 352.22],
  "font_size": 12.0,
  "length": 1145,
  "lines": 14,
  "spans": [
    {
      "text": "Block content here...",
      "font_size": 12.0,
      "bold": false,
      "italic": false,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": false,
      "uri": false
    }
  ]
}

headings:

{
  "type": "heading",
  "bbox": [111.80, 187.53, 509.10, 217.56],
  "font_size": 32.0,
  "length": 25,
  "level": 1,
  "spans": [
    {
      "text": "Heading Text",
      "font_size": 32.0,
      "bold": false,
      "italic": false,
      "monospace": false,
      "strikeout": false,
      "superscript": false,
      "subscript": false,
      "link": false,
      "uri": false
    }
  ]
}

lists:

{
  "type": "list",
  "bbox": [40.44, 199.44, 107.01, 345.78],
  "font_size": 11.04,
  "length": 89,
  "spans": [],
  "items": [
    {
      "spans": [
        {
          "text": "First item",
          "font_size": 11.04,
          "bold": false,
          "italic": false,
          "monospace": false,
          "strikeout": false,
          "superscript": false,
          "subscript": false,
          "link": false,
          "uri": false
        }
      ],
      "list_type": "bulleted",
      "indent": 0,
      "prefix": false
    },
    {
      "spans": [
        {
          "text": "Second item",
          "font_size": 11.04,
          "bold": false,
          "italic": false,
          "monospace": false,
          "strikeout": false,
          "superscript": false,
          "subscript": false,
          "link": false,
          "uri": false
        }
      ],
      "list_type": "numbered",
      "indent": 0,
      "prefix": "1."
    }
  ]
}

tables:

{
  "type": "table",
  "bbox": [72.0, 220.0, 523.5, 400.0],
  "font_size": 12.0,
  "length": 256,
  "row_count": 3,
  "col_count": 2,
  "cell_count": 2,
  "spans": [],
  "rows": [
    {
      "bbox": [72.0, 220.0, 523.5, 250.0],
      "cells": [
        {
          "bbox": [72.0, 220.0, 297.75, 250.0],
          "spans": [
            {
              "text": "Header A",
              "font_size": 12.0,
              "bold": false,
              "italic": false,
              "monospace": false,
              "strikeout": false,
              "superscript": false,
              "subscript": false,
              "link": false,
              "uri": false
            }
          ]
        },
        {
          "bbox": [297.75, 220.0, 523.5, 250.0],
          "spans": [
            {
              "text": "Header B",
              "font_size": 12.0,
              "bold": false,
              "italic": false,
              "monospace": false,
              "strikeout": false,
              "superscript": false,
              "subscript": false,
              "link": false,
              "uri": false
            }
          ]
        }
      ]
    }
  ]
}

span fields

all text spans contain:

  • text: span content
  • font_size: size in points
  • bold, italic, monospace, strikeout, superscript, subscript: boolean style flags
  • link: boolean indicating if span contains a hyperlink
  • uri: URI string if linked, otherwise false

faq

why not marker/docling?
if you have time and need maximum accuracy, use those. this is for when you're processing millions of pages or iterating on extraction logic quickly.

how do i use bounding boxes for semantic chunking?
large y-gaps indicate topic breaks. font size changes show sections. indentation shows hierarchy. you write the logic using the metadata.

will this handle my complex PDF?
optimized for well-formed digital PDFs. scanned documents, complex table structures, and image-heavy layouts won't extract as well as ML tools.

commercial use?
only under AGPL v3 or with a license from Artifex (MuPDF's creators). see LICENSE


building from source

see BUILD.md.


license

  • derived work of mupdf.
  • inspired by pymupdf4llm; i have used it as a reference

AGPL v3. commercial use requires license from Artifex.

modifications and enhancements specific to this library are 2026 Adit Bajaj.

see LICENSE for the legal stuff.


links

feedback welcome.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pymupdf4llm_c-1.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp314-cp314-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

pymupdf4llm_c-1.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp313-cp313-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

pymupdf4llm_c-1.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp312-cp312-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

pymupdf4llm_c-1.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp311-cp311-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

pymupdf4llm_c-1.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp310-cp310-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

pymupdf4llm_c-1.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (77.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymupdf4llm_c-1.4.1-cp39-cp39-macosx_15_0_arm64.whl (40.9 MB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file pymupdf4llm_c-1.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a28e84c9c43be2429adc30e6c91a2095c565f7472f81a917e9cf3909fb7b45a
MD5 46e3689c1d6906e2591602aa38f87c37
BLAKE2b-256 868085c1d54e41e0a5085e76e5873309c70a298304be8e9e6f82d012736b38a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 30fe00dc58b755ddc2b0e4c81ab39eabe959863d59608df51fe2283fae9b45e5
MD5 1de2a00f8337972b13b1ee6b1db269cb
BLAKE2b-256 df73cbd2f7b181d877ee4bf2ff480d44f87d1268a4c39f4388f4a5ca2a9012dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp314-cp314-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 31e0c91c07085336159115300fa63bc999aed855f7b508871df360f8502425ee
MD5 7d20603fd76e2d5987d38e130f933a21
BLAKE2b-256 b6cbc6248a7c6d8a04527a1a59b38eed78419a57ec56d670a8156816d26f1c9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d8b93c1fb0dd81b2d0749847ace683283026a31c923b55ce6b6a9f1af3889c4b
MD5 b097e7b908080e5d7371791fd0057ba5
BLAKE2b-256 07f0dd16fa138f3aa18a650e5a259d38ceae786a80fe33ba6178ca901de0efa9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0eaf9acf58defad96466f108bda5a81a24baafadd4630d8fc50d9e75e55c03ad
MD5 e5bb8df16d0920593738750f1a9072d1
BLAKE2b-256 3f78abae3ff0627a462695233c7e7254d1115804231e42819fb76f1fcd0faac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ea4bd8cdd228853c55690796d9c402ebd231a082765acfd66938666862df583d
MD5 cb6bef43052a5f45fa24034039fa9f17
BLAKE2b-256 40e10fa76f89e2a202e975367ac432bc5b07cfb37b443e26d406426761f546e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e469bd5cf6ee7df5cce809d62a8593e801b3c537565d8aa6aa1724018e04b592
MD5 f2b1b441cc839bf0b7e583e6d786a503
BLAKE2b-256 f3c4c9eaced12664cba7b70d264c35f499429d91d6de6d02d86d1f0bc91d03ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cbe49141b9cb2245e10acb65d32a40e4c1b75e7ce3f786cbc111960874b86476
MD5 011dfb3db7372c4c08b82f71d3545e72
BLAKE2b-256 b9dbea200acf5b41928b8a5edd1515b2787dc1f795a178428c1617faf0079866

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e7a45c54be6028bfb6671660e528384dc9d00eade0ec4a616e7f6031fb04009
MD5 83118566597216e4bd904d21226624a1
BLAKE2b-256 4dc37bb9ea7a09fca6ff63a0b3a8884cea9d1bcf3322f94759c3592cbedca0e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f2ebb14ee3a579dfc53565dade825328fdb8d070e56489ee1fbb89ee06e4921a
MD5 748b72e9bc33c178e44074640b1e7c90
BLAKE2b-256 6cdb4768146c3842b76555902ceee28e00e4c32c12cc60b2a18a141bd190477b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 560be92296f5e53d116db57f1632566f92a0cce5f814f867f337bfb83d01721e
MD5 31a05b956138e0dbf77cf6aa28d7ef28
BLAKE2b-256 8711896a5391ed3f6b62594afeeeb46531d0fc72c01657e1739526e62b75b566

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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

File details

Details for the file pymupdf4llm_c-1.4.1-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pymupdf4llm_c-1.4.1-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 de214dfdef8fe2cc97a99bdceae62d6bd6b09d6a8bb8984061b5dfbbadf6d0e3
MD5 2678206d75ea5a8c0d1c2a7e29135e11
BLAKE2b-256 3aaf372ad75b16faa82a77eee49207932e1d5ce5b2b1319f6942c101980f8de0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymupdf4llm_c-1.4.1-cp39-cp39-macosx_15_0_arm64.whl:

Publisher: publish.yml on intercepted16/pymupdf4llm-C

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 Pingdom Monitoring Sentry Error logging StatusPage Status page