crop_pil_image multiplied the normalized bbox by the render scale,
yielding ~2px crops. Map it to the actual rendered image dimensions
instead and drop the now-unused scale parameter from the crop chain.
Rename _normalize_bbox_to_thousandths to _normalize_bbox_to_unit since
it already emits 0-1 coordinates.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
_retained_page_indices and _broken_page_indices had no active consumer;
broken pages are already materialized as empty PageInfo placeholders and
page selection is expressed via is_full_document. Remove the fields,
their serialization keys, and the now-unused _parse_optional_int_list.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.0 was never released; use 2.0 as the public version. Rename the
reader helper to _build_middle_json_from_current and update tests and
docs that referenced 3.0. EPUB OPF "version": "3.0" is left intact.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Selecting the newest active file row whose path still exists fixes
FileNotFoundError after a source file is moved. Applies to parse
execution and source-image rendering; ingest now retires duplicate
rows whose files no longer exist. FTS rebuild keeps any active row
(sorted deterministically) and reads title/author from docs, which
the files table never had.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- complete supported-format lists in en/zh quick_usage and cli_tools
- extend e2e fixture setup with doc/ppt/xls/rtf/ofd/epub/html/odt/ods/odp
- add FILETYPE-003/004/005 for page_range, tier and HTML source_context
- update FILETYPE-001 to cover all 14 parseable non-PDF formats
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Remote V1 APIs can still return MinerU 3.4.5 pdf_info payloads.
Route them through ParseResult.from_dict legacy migration instead of
rejecting, and wrap ValueError as invalid_middle_json_output so unsafe
image sidecar paths surface as API errors.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>