NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4961 most downloaded on PyPI
A library for performing inference using trained models.
Last release 3 months ago
11 Jun 2026
Ships unpredictably
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
4 years old
124 releases · first in 2022
One column per quarter.
fix: render filled PDF form field values (init_forms) by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/515
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.12...v1.6.13
convert_pdf_to_image now calls init_forms() so AcroForm/XFA field values (text typed into fillable fields) are painted into the rendered page image instead of being silently dropped.fix: render rotated PDF pages consistently with extracted text by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/514
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.11...v1.6.12
convert_pdf_to_image no longer re-applies the page /Rotate on top of pypdfium2's render (which already produces the display frame), so the rendered image stays in the same coordinate frame as pdfminer's extracted text. For pages with a non-zero /Rotate, the dominant text orientation is detected and, when a single 90-degree orientation clearly dominates (configurable via PDF_ROTATION_DOMINANT_ANGLE_THRESHOLD), the image is rotated so its text is upright. The applied correction is exposed as pdf_rotation_correction in the page image metadata so downstream consumers can keep extracted coordinates aligned.feat: Track the table extraction method by @vladimir-kivi-ds in https://github.com/Unstructured-IO/unstructured-inference/pull/513
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.10...v1.6.11
table_extraction_method field to LayoutElements and LayoutElement to track which algorithm produced a table (grid, tatr, vlm).Allow Python 3.13 support by @CyMule in https://github.com/Unstructured-IO/unstructured-inference/pull/511
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.9...v1.6.10
Update Python 3.11 support by @CyMule in https://github.com/Unstructured-IO/unstructured-inference/pull/510
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.8...v1.6.9
Reject oversized PDF renders before bitmap allocation by @CyMule in https://github.com/Unstructured-IO/unstructured-inference/pull/509
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.7...v1.6.8
fix: fix rare occasion of initialization error by converting LazyDict into dict by @badGarnet in https://github.com/Unstructured-IO/unstructured-infer
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.6...v1.6.7
get_model now materializes LazyDict model configs into a plain dict before
unpacking into initialize(**...). Uses __iter__ + __getitem__ to avoid
depending on Mapping.keys(), which has been observed to fail at **
unpacking with "argument after ** must be a mapping, not LazyDict" in some
deployment environments.Relax pandas and numpy constraints by @vladimir-kivi-ds in https://github.com/Unstructured-IO/unstructured-inference/pull/507
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.5...v1.6.6
Unit test for pdf page rotation by @vladimir-kivi-ds in https://github.com/Unstructured-IO/unstructured-inference/pull/505
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.4...v1.6.5
pdf_rotation in page.image_metadata so downstream consumers can check page rotation after the page image is freedconvert_pdf_to_imagefix(deps): upgrade vulnerable transitive dependencies [security] by @lawrence-u10d in https://github.com/Unstructured-IO/unstructured-inference/pull/5…
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.2...v1.6.4
/Rotate metadata during page rendering - pypdfium2's page.render() ignores the flag, producing sideways images for rotated pagesmem: free intermediate arrays during YoloX inference by @KRRT7 in https://github.com/Unstructured-IO/unstructured-inference/pull/496
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.6.0...v1.6.2
dpi an explicit parameter on convert_pdf_to_image (default 200) instead of reading from config internally, enabling unstructured to use this as the single source of truth for PDF renderingmem: use np.full() instead of np.ones() * scalar in YoloX preprocess by @KRRT7 in https://github.com/Unstructured-IO/unstructured-inference/pull/497
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.5.3...v1.6.0
huggingface-hub lower bound from >=1.4.1 to >=0.22.0 (the >=1.4.1 was an artifact of the uv migration and broke compatibility with transformers<5.0)chore: add Renovate config (python-uv preset) by @lawrence-u10d in https://github.com/Unstructured-IO/unstructured-inference/pull/472
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.5.2...v1.5.3
Enable trusted publishing by @PastelStorm in https://github.com/Unstructured-IO/unstructured-inference/pull/471
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/v1.5.1...v1.5.2
feat: bump pypdfium minimum and use context manager by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/460
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/1.1.8...1.2.0
Update OpenCV-Python to 4.13.0.90 to squash ffmpeg vulnerability CVE-2023-6605
Use inference_config to set default rendering DPI
Constrain urllib3 to urllib3>=2.6.0 to address CVE-2025-66471 and CVE-2025-66418
chore(deps): Bump several depedencies to resolve open high CVEs
Add NotImplementedError when trying to single index a TextRegions, reflecting the fact that it won't behave correctly at the moment.
TextSource to track where the text of an element came from__post_init__ of TextRegions and LayoutElement slightly to automate initializationzoom_image (codeflash)cells_to_html for an 8% speedup in some cases (codeflash)outputs_to_objects for an 88% speedup in some cases (codeflash)DetrImageProcessor with env variablesglobal to store shared variablesfeat: add thread lock to prevent racing condition when instantiating singletons
DetrImageProcessor with env variablesBREAKING stop supporting python 3.8
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.10...1.0.2
unpin numpy and raise min for onnx higher to be compatible by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/416
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.9...0.8.10
numpy and bump minimum for onnxruntime to be compatible with numpy>=2feat: make PageLayout.elements a cached property by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/414
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.8...0.8.9
Nothing published for this version
feat: add password param for protected pdfs by @pprados in https://github.com/Unstructured-IO/unstructured-inference/pull/392
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.6...0.8.7
feat: add back source attribute for backward compatibility by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/407
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.5...0.8.6
source to TextRegions and LayoutElements for backward compatibilityremove pdfplumber but include pdfminer-six==20240706 to update pdfminer
remove pdfplumber but include pdfminer-six==20240706 to update pdfminer
pdfplumber but include pdfminer-six==20240706 to update pdfminerFeat/add more attributes to layoutelements by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/404
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.3...0.8.4
text_as_html and table_as_cells to LayoutElements class as new attributessource attribute from TextRegions and LayoutElements with an array attribute sourcesfix: drop layoutparser model support
layoutelement.from_lp_textblock() and related tests as it's not supportedlayoutparser liblayoutelement.from_lp_textblock() and related tests as it's not usedlayoutparser libREADME.md to remove layoutparser model zoo support notefix: fix bugs in data structure by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/402
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.8.1...0.8.2
TextRegions.from_list triggers IndexErrorLayoutElements the class id mapping is no properly
updatedfix: fix list index out of range error caused by calling LayoutElements.from_list() with empty list
Remove chipper model by @vangheem in https://github.com/Unstructured-IO/unstructured-inference/pull/395
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.41...0.8.0
fix: fix incorrect type casting with higher versions of numpy when substracting a float from an int array
numpy when substracting a float from an int arrayNone when calling LayoutElements.as_list()Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.39...0.7.40
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.39...0.7.40
update version for release by @badGarnet in https://github.com/Unstructured-IO/unstructured-inference/pull/389
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.38...0.7.39
LayoutElements classNothing published for this version
build(deps): update setup-python gha by @qued in https://github.com/Unstructured-IO/unstructured-inference/pull/360
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.36...0.7.37
numpy array to store layout elements' information in one single LayoutElements
object instead of using a list of LayoutElementfix: add input parameter validation to fill_cells() when converting cells to html
fill_cells() when converting cells to htmlFix syntax for generated HTML tables
* Reduce excessive logging
BREAKING CHANGE: removes legacy detectron2 model
refactor: remove all code related to filling inferred elements text from embedded text (pdfminer).
refactor: remove all cid related code that was originally added to filter out invalid pdfminer text
cid related code that was originally added to filter out invalid pdfminer textfix: table transformer predictions are now removed if confidence is below threshold
feat: allow table transformer agent to return table prediction in not parsed format
chore: update pin on onnxruntime dependency.
onnxruntime dependency.feat: add a set of new ElementTypes to extend future element types recognition
ElementTypes to extend future element types recognitionunstructured_inference.models.base.register_new_model functionfix: replace Rectangle.is_in() with Rectangle.is_almost_subregion_of() when filling in an inferred element with embedded text
Rectangle.is_in() with Rectangle.is_almost_subregion_of() when filling in an inferred element with embedded textinstall-detectron2 from the MakefileUNSTRUCTURED_DEFAULT_MODEL_INITIALIZE_PARAMS_JSON_PATH to int typeFix: text_as_html attribute appearing in every element metadata by @mpolomdeepsense in https://github.com/Unstructured-IO/unstructured-inference/pull/
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.23...0.7.24
text_as_html element attribute only if text attribute contains HTML tags.fix: added handling in UnstructuredTableTransformerModel for if recognize returns an empty list in run_prediction.
UnstructuredTableTransformerModel for if recognize returns an empty
list in run_prediction.Feat/chipper repetitions by @ajjimeno in https://github.com/Unstructured-IO/unstructured-inference/pull/295
Full Changelog: https://github.com/Unstructured-IO/unstructured-inference/compare/0.7.20...0.7.21
PageLayout object, lack image_metadata and other attributes that are required for downstream processing; this fix also reduces the memory overhead of using chipper modelchipper-v3: improved table prediction
refactor: remove all OCR related code
refactor: remove all image extraction related code
refactor: remove all pdfminer related code
pdfminer related codebug: Allow supplied ONNX models to use label_map dictionary from json file
enhancement: Enable env variables for model definition
enhancement: Remove Super-Gradients Dependency and Allow General Onnx Models Instead
refactor: add a class ElementType for the element type constants and use the constants to replace element type strings
ElementType for the element type constants and use the constants to replace element type stringsPicture and FigureYour coding agent can read these notes before it upgrades. Set up the MCP server →