Skip to content

Add page-level text extraction for PDF/PPTX/DOCX documents#1263

Open
jeonsworld wants to merge 4 commits intomicrosoft:mainfrom
jeonsworld:main
Open

Add page-level text extraction for PDF/PPTX/DOCX documents#1263
jeonsworld wants to merge 4 commits intomicrosoft:mainfrom
jeonsworld:main

Conversation

@jeonsworld
Copy link

@jeonsworld jeonsworld commented May 23, 2025

Summary

Adds optional page extraction to PDF, PPTX, and DOCX converters with extract_pages parameter, returning structured page data while maintaining full backward compatibility.

Motivation

Users need to process PDF/PPTX/DOCX pages separately and know which content comes from which page for page-aware applications. Additionally, local development settings should not be tracked in version control.

Changes

  • New PageInfo class: Stores page number and content
  • Enhanced DocumentConverterResult: Added optional pages attribute
  • Extended converters: Added extract_pages parameter for page-by-page processing in PDF, PPTX, and DOCX converters
  • CLI support: Added --extract-pages and --pages-json flags
  • Comprehensive tests: Test cases covering all scenarios for each format

Usage

Python API

# Traditional (unchanged)
result = md.convert("doc.pdf")

# New page extraction - works for PDF, PPTX, and DOCX
result = md.convert("doc.pdf", extract_pages=True)
result = md.convert("presentation.pptx", extract_pages=True)
result = md.convert("document.docx", extract_pages=True)

for page in result.pages:
    print(f"Page {page.page_number}: {page.content}")

CLI

# Extract pages with JSON output
markitdown doc.pdf --extract-pages --pages-json
markitdown presentation.pptx --extract-pages --pages-json
markitdown document.docx --extract-pages --pages-json

Resolved #210 #122

@jeonsworld
Copy link
Author

@microsoft-github-policy-service agree

@jeonsworld jeonsworld changed the title Add page-level text extraction for PDF documents Add page-level text extraction for PDF/PPTX/DOCX documents May 23, 2025
@afourney
Copy link
Member

I like this idea. It meshes well with the pptx slide output as well.

I need to do a little testing before merging -- I'll try to do that this weekend.

@mcchoe
Copy link

mcchoe commented Jun 12, 2025

Hi team - any ETA on the release of this PR? This would greatly help our project.

@kanemaru-nec
Copy link

@jeonsworld It seems that some statuses are on standby, and we need them for our project, so please move forward.

@jeonsworld
Copy link
Author

@afourney Hi, the workflows for this PR are currently pending approval. Could you please review and approve them so the checks can run? Thank you.

@gaccastro
Copy link

Hello everyone and @afourney,

Apologies for the tagging but I was wondering if there is an ETA on this? It's something that would be very useful overall and also for a particular project my team is working on.

@hkaraoguz
Copy link

This feature will be very useful so I am also wondering when this can be approved. Thank you.

@ttc-christopher-simmerman

Has this been implemented yet?

@nuldertien
Copy link

Would be helpful to me aswell!

@Abhiraj-Alois
Copy link

Hi! First of all, thank you so much for developing this feature. Could you please let me know when this version will be released? It would be incredibly helpful for my project!

@dj953590
Copy link

dj953590 commented Aug 3, 2025

Such an important feature can we get new build here 0.7.2 with extract_pages feature added to it

@semor-joe
Copy link

Hi, want to ask if this will be merged into the main branch? This is a really important feature

@elieworkspace
Copy link

Hello, could you please move it to the main branch? This feature is so important!! Thank you for this wonderful project.

@zigarc
Copy link

zigarc commented Dec 8, 2025

Please merge this pull request and release it. It is very important for our project.

@jswaczyna
Copy link

What is the status of this task??? When is this going to be added?

jeonsworld and others added 4 commits February 13, 2026 19:59
- Add PageInfo class to store page number and content
- Enhance DocumentConverterResult with optional pages attribute
- Extend PdfConverter with extract_pages parameter for page-by-page processing
- Add CLI support with --extract-pages and --pages-json flags
- Implement robust error handling with fallback to full document extraction
- Maintain 100% backward compatibility with existing API
- Add comprehensive test suite with 8 test cases covering all scenarios
  - Add slide-level extraction for PPTX files with extract_pages parameter
  - Each slide is treated as a PageInfo object with sequential numbering
  - Add extract_pages parameter to DOCX for API consistency (returns None due to dynamic pagination)
  - Import PageInfo class in both converters to support the new functionality
  - Add comprehensive test suites for both formats ensuring backward compatibility
  - Maintain 100% backward compatibility with existing API
- Format all Python files with Black (v23.7.0)
- Fix line length and formatting issues in page extraction feature files
- Ensure consistent code style across the codebase
@jeonsworld
Copy link
Author

@afourney @zashed Could you approve the CI workflows? Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[WORD, PPT] Please add a "Output PageNumber" Option.