yfedoseev /pdf_oxide
The fastest PDF library for Python and Rust. Text extraction, image extraction, markdown conversion, PDF creation & editing. 0.8ms mean, 5× faster than industry leaders, 100% pass rate on 3,830 PDFs. MIT/Apache-2.0.
- Stars
- 1,157 stars
- Forks
- 148 forks
- Language
- Rust
- License
- APACHE-2.0
- Created
- Nov 5, 2025
- Last push
- Oct 31, 2026
- Updated
- Nov 2, 2026
- document-processing
- pdf-editor
- pdf-generation
- pdf-library
- pdf-parser
- python
- rust
- text-extraction
- data-extraction
- fast
- image-extraction
- llm
- markdown
- pdf-to-markdown
- pdf-to-text
- pyo3
- rag
In the Repository Index from the Seed Dataset since Oct 22, 2026.
Star History
193 days recorded, Apr 25, 2026 – Nov 3, 2026 (UTC). Net change +489 stars.
The star count of each day is the latest count less the net stars of the later days.
Add this Star History to a README
The images follow the light or dark theme of the page that shows them, and update every hour. Add ?theme=light or ?theme=darkto the chart address to keep one theme.
Star History chart
[](https://awesomerepos.com/yfedoseev/pdf_oxide)Badge
[](https://awesomerepos.com/yfedoseev/pdf_oxide)Timeline
This repository got 44 stars on Oct 27, 2026, its largest day since Apr 25, 2026.
It gained stars on 166 of the 193 days with a record.
Its largest 7 days were Oct 27, 2026 to Nov 2, 2026: 62 stars.
In the 30 days to Nov 3, 2026 it got 95 stars, 98% more than in the 30 days before.
It reached 1,000 stars on Aug 28, 2026, 296 days after it was created.
Its latest release is v0.3.78, published on Sep 8, 2026.
- Created on the Repository Host
- +10 stars in one day
- Release v0.3.74: v0.3.74 | Scientific and print-era PDF extraction fixes — per-glyph advance now folds `TJ` kerning per the spec so it matches the renderer (poppler/PDFium/pymupdf), fixing word spacing on justified and kerned text; displayed-math tokens no longer fuse into single words, dense LaTeX pages stop being misrouted to OCR, subscript indices stay subscripts, condensed headings and running footers recover their word gaps, stroke-drawn table rules and 90°-rotated pages read correctly, and scanned Hebrew/Arabic OCR layers extract in logical order.
- Release v0.3.75: v0.3.75 | Rendering-accuracy and extraction-fidelity release. DeviceCMYK now renders through measured process inks; page rotation (including `/Rotate 270` and negative values) and Separation/DeviceN tint transforms are honoured; inline images and CMYK/CCITT image decoding are corrected; Form-XObject text no longer goes missing; Tagged PDFs can be read in structure order; and a large text-extraction performance pass lands, alongside a dependency modernization (rustybuzz→harfrust, office_oxide 0.1.8).
- Release v0.3.76: v0.3.76 | Redaction/editor persistence and rendering-accuracy release: DOM edits and `add_text()` overlays on source-loaded pages now survive `save()` without leaving dangling `/Contents` references; multi-input (DeviceN) Type 0 tint transforms, non-CCITT 1-bit images, and inline images render correctly; CCITT `/ImageMask` XObjects decode instead of misreading compressed data as raw stencil rows; spatial table-cell ownership is corrected at singleton-span and boundary cases; and repeated `search()` calls on the same document are no longer `O(searches × full extraction)`. The Java binding gains PDF/A conversion, completing coverage across every first-party language binding.
- Release v0.3.77: v0.3.77 | Search-index control lands in every first-party binding: `prepare_search()`/`clear_search_index()` (added to the Rust core in 0.3.76 alongside the new per-page search-index cache) can now be called from Python, JavaScript/WASM, Java/Kotlin/Scala/Clojure, Go, Ruby, PHP, Dart, R, Julia, Zig, C#, C++, Swift, Objective-C, and Elixir — not just Rust. `extract_text()`/`to_markdown()`/`to_plain_text()` no longer silently drop `/Artifact`-tagged content (running headers/footers, section identifiers) with no way to opt back in.
- +13 stars in one day
- Reached 1,000 stars
- Release v0.3.78: v0.3.78 | Correctness under audit: 144 defects across rendering, text, reading order, files and colour
- Entered the Repository Index from the Seed Dataset
- Largest star day recorded: +44 stars
- Latest push
From the Repository Host's creation date and releases, the Admission, the Star History, and the Observations. Star milestones show only when the Star History records the day. On the chart of net stars each day, a solid line marks a release.
Forks and pushes
From 13 Observations, Oct 22, 2026 – Nov 3, 2026. Forks +10. A new push was seen on 4 of 12 days.
- Oct 23, 2026: no new push
- Oct 24, 2026: no new push
- Oct 25, 2026: no new push
- Oct 26, 2026: no new push
- Oct 27, 2026: new push
- Oct 28, 2026: no new push
- Oct 29, 2026: no new push
- Oct 30, 2026: new push
- Oct 31, 2026: new push
- Nov 1, 2026: new push
- Nov 2, 2026: no new push
- Nov 3, 2026: no new push
A filled day: the last push time changed since the Observation before it.
Dependencies in the index
AwesomeRepos has not scanned the dependency graph of this repository. The scan reads the 2,000 visible repositories with the most stars.
1 scanned repository names a package from this repository.
Uses (in the index) 0
None.
Used by (in the index) 1
Go: github.com/yfedoseev/pdf_oxide/go
Sources: the GitHub dependency graph of each repository, and deps.dev for the source repository of each package. A dependency graph also names development packages. deps.dev takes most source repositories from package metadata. How the dependency graph is made
Observations
What the Repository Host reported each day.
| Day (UTC) | Stars | Forks | Last push | Archived |
|---|---|---|---|---|
| Nov 3, 2026 | 1,157 | 148 | Oct 31, 2026 | No |
| Nov 2, 2026 | 1,153 | 147 | Oct 31, 2026 | No |
| Nov 1, 2026 | 1,152 | 147 | Oct 31, 2026 | No |
| Oct 31, 2026 | 1,150 | 147 | Oct 30, 2026 | No |
| Oct 30, 2026 | 1,150 | 147 | Oct 29, 2026 | No |
| Oct 29, 2026 | 1,145 | 145 | Oct 26, 2026 | No |
| Oct 28, 2026 | 1,142 | 144 | Oct 26, 2026 | No |
| Oct 27, 2026 | 1,135 | 142 | Oct 26, 2026 | No |
| Oct 26, 2026 | 1,091 | 138 | Oct 20, 2026 | No |
| Oct 25, 2026 | 1,091 | 138 | Oct 20, 2026 | No |
| Oct 24, 2026 | 1,090 | 138 | Oct 20, 2026 | No |
| Oct 23, 2026 | 1,090 | 138 | Oct 20, 2026 | No |
| Oct 22, 2026 | 1,089 | 138 | Oct 20, 2026 | No |