---
title: "Best document parsing APIs for production use (2026)"
canonical_url: "https://www.nutrient.io/blog/best-document-parsing-apis/"
md_url: "https://www.nutrient.io/blog/best-document-parsing-apis.md"
last_updated: "2026-08-27T16:40:58.126Z"
description: "Compare document parsing APIs by output contract, grounding, deployment, and exception handling. Learn how to evaluate each API on your own documents."
---

**TL;DR**

- There’s no single best document parsing API. Choose against your required output, source-grounding needs, deployment boundary, document mix, exception workflow, and total cost.

- AI-native APIs are usually the shortest path to Markdown or schema-shaped JSON. Hyperscaler APIs fit teams already committed to one cloud. Open source offers control but leaves more production engineering to you.

- Treat confidence as a routing signal, not proof that a value is correct. Pair it with page-level or field-level source locations and business validation.

- Run finalists on the same labeled documents. Measure field accuracy, grounding quality, failure handling, latency, and human-review volume.

The best document parsing API depends on what your application must receive and what happens when extraction is uncertain. For developers who need structured data from PDFs and scans, the strongest shortlist usually includes AI-native parsing APIs such as Nutrient, LlamaParse, Reducto, Extend, and Unstructured, plus the relevant cloud provider or an open source pipeline. No one API wins every document type.

Decide first whether you need Markdown, layout-aware elements, or schema-shaped JSON. Then compare confidence and source grounding, deployment, format coverage, exception handling, and total production cost. This is the API-level companion to the [document AI platform guide](https://www.nutrient.io/blog/best-document-ai-platforms.md), which covers the broader platform decision.

## Six criteria that decide the API choice

A demo can show clean output from one PDF. A production contract must define what the parser returns, how the caller verifies it, and how failures move through the system.

### 1. Output contract

Start with the downstream consumer. Search and retrieval-augmented generation (RAG) systems often need reading-ordered Markdown or typed document elements. Business automation usually needs schema-shaped JSON with stable field names and types. Review interfaces need page numbers, coordinates, and the source text behind each value.

Ask whether one request returns the required structure or whether you must chain parsing, extraction, normalization, and validation steps. Also inspect how the API represents missing values, repeated groups, nested objects, tables, and partial results. A valid JSON response can still violate your business contract.

### 2. Confidence and source grounding

A confidence score is useful only after you understand its scope. It might describe optical character recognition (OCR) quality, model certainty, a whole element, or one extracted field. Scores from different vendors aren’t directly comparable.

For consequential workflows, prefer confidence scores with source grounding. Per-field bounding boxes, page references, and cited source text let a reviewer check a value without searching the document. Test whether a citation points to the exact supporting region, not merely the correct page.

Define review thresholds on your own labeled set. A score shouldn’t bypass format checks, cross-field rules, database checks, or human review for high-risk fields.

### 3. Deployment and data boundary

Confirm where source files, intermediate artifacts, and results are processed and retained. Options across this market include hosted APIs, regional processing, a virtual private cloud (VPC), on-premises software, and fully local libraries.

Cloud integration can reduce operational work. Self-hosting can satisfy data residency needs, but it transfers model serving, scaling, observability, and upgrades to your team. Validate the actual processing path for every mode you plan to use. A product may self-host its base parser while advanced modes use hosted models.

### 4. Format and document coverage

Inventory the files you receive, not the files in a sales demo. Include born-digital and scanned PDFs, images, Office files, password-protected documents, handwriting, rotated pages, mixed languages, and damaged scans where applicable.

Tables deserve neutral treatment. Most candidates offer some table handling, but merged cells, repeated headers, footnotes, and cross-page tables behave differently. Test them as a separate slice. Don’t infer table quality from general OCR or field-accuracy claims.

### 5. Exception handling

Production parsing is an exception-routing system as much as an extraction system. Check asynchronous job states, timeouts, retry guidance, idempotency options, webhooks, rate-limit responses, and machine-readable failure reasons.

Then define your own exception classes: unreadable input, unsupported format, incomplete schema output, low-confidence field, failed grounding, and business-rule mismatch. The API should give your application enough information to retry, reject, or route each case for review.

### 6. Price shape

Normalize cost around a representative monthly workload. Include parsing, schema extraction, advanced modes, citations, OCR, retries, storage, network transfer, and human review. Credit-based and per-page pricing can both be predictable once you model document complexity and the features used.

The cheapest text-extraction call may become the expensive option if your team must add layout recovery, schema mapping, and review tooling. Compare the all-in pipeline, not one endpoint’s entry price.

## Comparison by API class

The table below is a shortlist map, not a ranking. Vendor capabilities change, so follow the linked documentation before committing to an integration.

| Class                     | Representative options                                           | Choose this class when                                                                                          | Main tradeoff to test                                                                                     |
| ------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| AI-native parsing APIs    | Nutrient, LlamaParse, Reducto, Extend, Unstructured              | You want developer-focused parsing, extraction, or RAG output without building the document-understanding layer | Output and grounding semantics differ sharply; some capabilities span separate products or optional modes |
| Hyperscaler document APIs | AWS Textract, Google Document AI, Azure Document Intelligence    | Your application, identity, storage, and monitoring already live in the same cloud                              | Cloud coupling, feature-specific request models, and the work required to normalize output                |
| Open source pipelines     | Docling, Unstructured open source, custom OCR and parsing stacks | Local processing, source access, or deep customization outweighs managed operations                             | You own deployment, scaling, evaluation, retries, upgrades, and review integration                        |

## AI-native parsing APIs

AI-native APIs compete on how quickly developers can move from a file to useful Markdown, document elements, or schema-shaped fields. Their product boundaries aren’t identical.

[Nutrient Data Extraction API](https://www.nutrient.io/api/data-extraction-api/) returns Markdown or spatial JSON from parsing and maps documents to a caller-defined JSON Schema for extraction. Its grounded extraction output includes per-field confidence, bounding boxes, page context, and match labels. Four parsing modes let callers choose between text, structure, understand, and agentic processing. PDFs, scans, images, and Office files are supported. Choose Nutrient when one application needs parsing plus source-linked review and may later connect extraction to document viewing or workflow components. The [LlamaIndex comparison](https://www.nutrient.io/api/data-extraction-api/vs/llamaindex/), [Reducto comparison](https://www.nutrient.io/api/data-extraction-api/vs/reducto/), and [Unstructured comparison](https://www.nutrient.io/api/data-extraction-api/vs/unstructured/) provide narrower capability checks.

[LlamaParse and LlamaExtract](https://developers.llamaindex.ai/llamaparse/general/faq/) divide parsing and schema extraction across related services. LlamaExtract accepts a JSON Schema, while LlamaParse offers multiple parsing tiers and integrates naturally with the wider LlamaIndex retrieval ecosystem. Enterprise customers can evaluate self-hosted or bring-your-own-cloud deployment. LlamaParse is the natural fit when RAG integration and the LlamaIndex ecosystem are central — then verify whether the combined Parse and Extract contract meets your grounding and cost requirements.

[Reducto](https://docs.reducto.ai/overview) is a focused document parsing and extraction platform with schema output, confidence details, bounding-box citations, and a citation viewer. Its documented deployment options include software as a service (SaaS), hybrid VPC, full VPC, and air-gapped on-premises configurations. Reducto is the pick when difficult visual documents and deployment flexibility lead the evaluation — but test its agentic processing against your latency and cost limits before committing.

[Extend](https://docs.extend.ai/extraction/overview) combines parsing and JSON Schema extraction with classification, splitting, editing, and multistep workflows. Extraction can return per-field OCR confidence and bounding-box citations when citations are enabled, and its response model exposes processing and failure states. Choose Extend when a configurable document-processing workflow matters as much as the parsing call. Confirm which confidence fields are present for the processor version you select.

[Unstructured](https://docs.unstructured.io/api-reference/overview) focuses on document ingestion. Its API partitions files into typed elements, and then supports enrichment, chunking, embedding, batch jobs, and connections to storage or vector systems. An open source library is also available for local pipelines. Choose Unstructured when preprocessing heterogeneous content for RAG is the primary job. If your application needs targeted fields with per-field review evidence, compare the extra extraction and validation layer you’ll need.

## Hyperscaler document APIs

Hyperscaler APIs are credible choices when cloud alignment reduces more work than a specialized parser saves.

[AWS Textract](https://docs.aws.amazon.com/textract/latest/dg/how-it-works-document-layout.html) returns a graph of Block objects for text, forms, tables, queries, signatures, and layout. Blocks include confidence and geometry, and document analysis can connect to a human-in-the-loop configuration. Choose Textract when AWS-native storage, queues, identity, and monitoring are already part of the architecture. Budget for traversing and normalizing the Block graph into your application’s output contract.

[Google Document AI](https://docs.cloud.google.com/document-ai/docs/custom-extractor-overview) offers pretrained processors and custom extractors. Custom extractors define document entities, return confidence, and associate entities with page anchors. Choose Google Document AI when a Google Cloud deployment and trainable, document-specific extraction fit the team’s operating model.

[Azure Document Intelligence](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/overview) combines OCR, prebuilt models, custom template models, custom neural models, and document classifiers. It returns strongly typed field values and supports confidence at several levels for current custom models. Choose it when Azure integration and labeled custom-model workflows are more valuable than a vendor-neutral extraction layer.

## Open source pipelines

Open source is a class, not a drop-in substitute for a managed API. [Docling](https://docling-project.github.io/docling/reference/document_converter/) converts PDFs, Office files, images, and other formats into a unified structured representation and can run as a Python API or command-line tool. Unstructured’s local library offers document partitioning and chunking with source access.

Choose open source when documents must stay local, the team needs to modify the parsing stack, or per-page service fees dominate at stable volume. Don’t call the pipeline production-ready until you’ve added capacity controls, version pinning, evaluation data, failure queues, security patching, and a review path. Zero license cost doesn’t mean zero operating cost.

## Scenario recommendations

Use these recommendations to form a shortlist. Then prove the decision on your documents.

- Choose Nutrient when schema-shaped fields need per-field confidence and bounding-box grounding, and when the application may also need embedded document review or processing.

- Choose LlamaParse and LlamaExtract when your team already builds around LlamaIndex and RAG ingestion is the center of the architecture.

- Choose Reducto when agentic parsing of difficult visual documents and VPC or on-premises deployment are primary requirements.

- Choose Extend when classification, splitting, extraction, and workflow configuration should live in one document-processing service.

- Choose Unstructured when connector-driven ingestion, typed elements, and RAG-specific chunking matter more than targeted field extraction.

- Choose a hyperscaler when existing cloud controls and operations outweigh the cost of adapting its response model.

- Choose an open source pipeline when local control is mandatory and your team can own the production engineering.

## Run a production-readiness evaluation

Use one labeled set for every finalist. Include routine documents and known failure cases. Keep tables as their own evaluation slice so they don’t distort field-level results.

1. Define the exact Markdown, element, or JSON contract before calling any API.

2. Score required fields separately. Record missing, incorrect, and invalidly typed values.

3. Check every cited field against the page region. Count correct values with wrong or unusable grounding as grounding failures.

4. Choose review thresholds from observed errors. Don’t copy a vendor’s example threshold into production.

5. Exercise password protection, corrupt files, timeouts, rate limits, retries, and asynchronous completion.

6. Measure end-to-end latency and cost, including advanced modes, citations, retries, and human review.

7. Pin API or model versions where possible, and rerun the set before accepting an upgrade.

The result should be a decision memo with evidence per document class, not a single blended accuracy score. The best PDF data extraction API for developers is the one whose failures your application can detect, explain, and recover from.

## FAQ

#### What is the best document parsing API with confidence scores and source grounding?

There’s no universal winner. Nutrient, Reducto, Extend, LlamaExtract, AWS Textract, Google Document AI, and Azure Document Intelligence expose different forms of confidence and source location data. Compare them on per-field semantics, citation accuracy, deployment, and exception routing using the same labeled documents. Nutrient is a strong fit when schema-shaped output, per-field confidence, bounding boxes, and match labels must feed a review workflow.

#### What is the best PDF data extraction API for developers?

Choose by output contract. Use an AI-native API for Markdown or schema-shaped JSON, a hyperscaler when cloud integration is decisive, or open source when local control is mandatory. Developer experience includes predictable errors, asynchronous jobs, versioning, retries, and review metadata — not only the first successful request.

#### What is the best API to extract structured data from PDFs and scans with AI?

Shortlist APIs that accept a schema or field definition and return typed values with source evidence. Nutrient, LlamaExtract, Reducto, Extend, Google Document AI, Azure Document Intelligence, and Textract Queries can all address parts of this job. Test scans, mixed layouts, and low-quality inputs from your own workload before choosing.

#### Do confidence scores prove an extracted value is correct?

No. A confidence score is a vendor-specific signal, not a guarantee. Determine whether it describes OCR, model output, an element, or a field. Pair it with source grounding, schema validation, business rules, and thresholds derived from labeled examples.

#### Should I use an open source parser or a managed document API?

Use open source when local execution, source access, and customization justify owning the operational stack. Use a managed API when faster integration, managed scaling, documented failure behavior, and support matter more. Compare total engineering and review cost, not only license or per-page cost.

## Related reading

- [Best document AI platforms](https://www.nutrient.io/blog/best-document-ai-platforms.md)

- [Nutrient Data Extraction API](https://www.nutrient.io/api/data-extraction-api/)

- [LlamaParse alternatives](https://www.nutrient.io/blog/llamaparse-alternatives.md)

- [Reducto alternatives](https://www.nutrient.io/blog/reducto-alternatives.md)

- [Extend alternatives](https://www.nutrient.io/blog/extend-alternatives.md)

- [Nutrient vs. LlamaIndex](https://www.nutrient.io/api/data-extraction-api/vs/llamaindex/)

- [Nutrient vs. Reducto](https://www.nutrient.io/api/data-extraction-api/vs/reducto/)

- [Nutrient vs. Unstructured](https://www.nutrient.io/api/data-extraction-api/vs/unstructured/)
---

## Related pages

- [The business case for accessibility: Five ways it drives enterprise value](/blog/5-ways-accessibility-drives-enterprise-value.md)
- [Accessibility Untangled Why It Matters Guide](/blog/accessibility-untangled-why-it-matters-guide.md)
- [Advanced Techniques For React Native Ui Components](/blog/advanced-techniques-for-react-native-ui-components.md)
- [`vector_store` holds your indexed documents (see the multimodal RAG post](/blog/agentic-rag.md)
- [Ai Document Automation Extraction To Action](/blog/ai-document-automation-extraction-to-action.md)
- [Ai Legal Assistant Document Authoring](/blog/ai-legal-assistant-document-authoring.md)
- [Amazon Textract Alternatives](/blog/amazon-textract-alternatives.md)
- [Start (clears any prior buffer), navigate the document, then stop into a file.](/blog/android-faster-pdf-rendering.md)
- [Android Pdf Out Of Memory Handling](/blog/android-pdf-out-of-memory-handling.md)
- [Angular File Viewer Pdf Image Office Files](/blog/angular-file-viewer-pdf-image-office-files.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Simple PII redaction.](/blog/automated-pii-removal.md)
- [Best Ai Document Workflow Platforms](/blog/best-ai-document-workflow-platforms.md)
- [Best Document Ai Platforms](/blog/best-document-ai-platforms.md)
- [Best Document Classification Platforms](/blog/best-document-classification-platforms.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [Best Multilingual Ocr Software](/blog/best-multilingual-ocr-software.md)
- [Best Secure Document Collaboration Platforms](/blog/best-secure-document-collaboration-platforms.md)
- [Build Vs Buy Document Extraction](/blog/build-vs-buy-document-extraction.md)
- [The CEO’s AI playbook: Why decision architecture beats model selection](/blog/ceo-ai-playbook-decision-architecture.md)
- [1. Extract and chunk the PDF.](/blog/chat-with-pdf.md)
- [Complete Guide To Pdfjs](/blog/complete-guide-to-pdfjs.md)
- [Construction Document Data Extraction](/blog/construction-document-data-extraction.md)
- [Convert One Drive Files To Pdf In Sharepoint](/blog/convert-one-drive-files-to-pdf-in-sharepoint.md)
- [Create And Edit Pdfs In Flutter](/blog/create-and-edit-pdfs-in-flutter.md)
- [Create Pdfs With React](/blog/create-pdfs-with-react.md)
- [Creating A Document Scanner With Ocr In Python](/blog/creating-a-document-scanner-with-ocr-in-python.md)
- [Creating And Filling Pdf Forms Programmatically In Javascript](/blog/creating-and-filling-pdf-forms-programmatically-in-javascript.md)
- [The CTO’s AI playbook: Why accountability architecture beats orchestration](/blog/cto-ai-playbook-accountability-architecture.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [Document Extraction Confidence Scores](/blog/document-extraction-confidence-scores.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Watermarking](/blog/document-watermarking.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [Extend Alternatives](/blog/extend-alternatives.md)
- [Extract Patient Data On Premises](/blog/extract-patient-data-on-premises.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [Fillable Pdf](/blog/fillable-pdf.md)
- [How To Add Digital Signature To Pdf Using React](/blog/how-to-add-digital-signature-to-pdf-using-react.md)
- [How To Build A Dotnet Maui Pdf Viewer](/blog/how-to-build-a-dotnet-maui-pdf-viewer.md)
- [How To Build A Flutter Pdf Viewer](/blog/how-to-build-a-flutter-pdf-viewer.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer-with-pdfjs.md)
- [How To Build A Javascript Pdf Viewer](/blog/how-to-build-a-javascript-pdf-viewer.md)
- [or](/blog/how-to-build-a-nextjs-pdf-viewer.md)
- [How To Build A Powerpoint Viewer Using Javascript](/blog/how-to-build-a-powerpoint-viewer-using-javascript.md)
- [Using Yarn](/blog/how-to-build-a-react-excel-viewer.md)
- [How To Build A React Native Pdf Viewer](/blog/how-to-build-a-react-native-pdf-viewer.md)
- [How To Build A React Powerpoint Viewer](/blog/how-to-build-a-react-powerpoint-viewer.md)
- [How To Build A Reactjs File Viewer](/blog/how-to-build-a-reactjs-file-viewer.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer-with-react-pdf.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer.md)
- [How To Build A Reactjs Viewer With Pdfjs](/blog/how-to-build-a-reactjs-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer With Pdfjs](/blog/how-to-build-a-vuejs-pdf-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer](/blog/how-to-build-a-vuejs-pdf-viewer.md)
- [How To Build An Android Pdf Viewer](/blog/how-to-build-an-android-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Ng2 Pdf Viewer](/blog/how-to-build-an-angular-pdf-viewer-with-ng2-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Pdfjs](/blog/how-to-build-an-angular-pdf-viewer-with-pdfjs.md)
- [How To Convert Docx To Pdf Using Javascript](/blog/how-to-convert-docx-to-pdf-using-javascript.md)
- [How To Convert Docx To Pdf Using Python](/blog/how-to-convert-docx-to-pdf-using-python.md)
- [How To Convert Html To Pdf Using Html2pdf](/blog/how-to-convert-html-to-pdf-using-html2pdf.md)
- [or](/blog/how-to-convert-html-to-pdf-using-react.md)
- [How To Convert Html To Pdf Using Wkhtmltopdf And Csharp](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-csharp.md)
- [or](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-python.md)
- [How To Convert Html To Pptx](/blog/how-to-convert-html-to-pptx.md)
- [How To Convert Word To Pdf In Nodejs](/blog/how-to-convert-word-to-pdf-in-nodejs.md)
- [or](/blog/how-to-create-a-react-js-signature-pad.md)
- [How To Create Pdfs With React To Pdf](/blog/how-to-create-pdfs-with-react-to-pdf.md)
- [How To Edit Pdfs Using Ios Pdf Library](/blog/how-to-edit-pdfs-using-ios-pdf-library.md)
- [How To Embed A Pdf Viewer In Your Website](/blog/how-to-embed-a-pdf-viewer-in-your-website.md)
- [How To Extract Tables From Pdf And Images](/blog/how-to-extract-tables-from-pdf-and-images.md)
- [How To Generate Pdf From Html With Nodejs](/blog/how-to-generate-pdf-from-html-with-nodejs.md)
- [base_url tells WeasyPrint where to resolve relative asset paths](/blog/how-to-generate-pdf-reports-from-html-in-python.md)
- [How To Merge Pdfs Using Javascript](/blog/how-to-merge-pdfs-using-javascript.md)
- [How To Ocr Pdfs In Linux](/blog/how-to-ocr-pdfs-in-linux.md)
- [How To Print Pdf In Csharp](/blog/how-to-print-pdf-in-csharp.md)
- [How To Programmatically Create And Fill Pdf Form In Angular](/blog/how-to-programmatically-create-and-fill-pdf-form-in-angular.md)
- [Open an image.](/blog/how-to-use-tesseract-ocr-in-python.md)
- [From an HTML string.](/blog/html-in-pdf-format.md)
- [Html To Pdf In Javascript](/blog/html-to-pdf-in-javascript.md)
- [Javascript Document Editor](/blog/javascript-document-editor.md)
- [Javascript Pdf Editors](/blog/javascript-pdf-editors.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Langextract Vs Llamaindex Extraction Comparison](/blog/langextract-vs-llamaindex-extraction-comparison.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [Llamaparse Alternatives](/blog/llamaparse-alternatives.md)
- [Low Code No Code Document Integrations](/blog/low-code-no-code-document-integrations.md)
- [or](/blog/merge-pdfs.md)
- [Swift Package Manager](/blog/mobile-pdf-sdk.md)
- [`elements` come from your document parser — each has a type and content.](/blog/multimodal-rag.md)
- [Nutrient Flutter 6 Bindings Api](/blog/nutrient-flutter-6-bindings-api.md)
- [Nutrient Flutter Bindings Architecture](/blog/nutrient-flutter-bindings-architecture.md)
- [Nutrient Vs Conga Composer](/blog/nutrient-vs-conga-composer.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Building WCAG 2.2, Section 508, and PDF/UA-compliant PDFs with an SDK](/blog/pdf-accessibility.md)
- [Extract data from PDF files: A developer guide to structured data from PDFs and scans](/blog/pdf-data-extraction-developer-guide.md)
- [Pdf Extraction Benchmark Opendataloader Bench](/blog/pdf-extraction-benchmark-opendataloader-bench.md)
- [Pdf Extraction Document Case Studies](/blog/pdf-extraction-document-case-studies.md)
- [Pdf Page Labels](/blog/pdf-page-labels.md)
- [Pdf Sdk Compliance Security Checklist](/blog/pdf-sdk-compliance-security-checklist.md)
- [Pdf Sdk Performance Benchmark](/blog/pdf-sdk-performance-benchmark.md)
- [Pdf Ua Compliance Guide](/blog/pdf-ua-compliance-guide.md)
- [Pdfjs Accessibility Structtree Printing](/blog/pdfjs-accessibility-structtree-printing.md)
- [Pdfjs Advanced Loading Streaming Workers](/blog/pdfjs-advanced-loading-streaming-workers.md)
- [Pdfjs Annotation Editor Layer](/blog/pdfjs-annotation-editor-layer.md)
- [Pdfjs Area Annotations Canvas Capture](/blog/pdfjs-area-annotations-canvas-capture.md)
- [Pdfjs Coordinate Systems Pdf To Screen](/blog/pdfjs-coordinate-systems-pdf-to-screen.md)
- [Pdfjs Document Outline Bookmarks Metadata](/blog/pdfjs-document-outline-bookmarks-metadata.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [macOS](/blog/pdfjs-file-format-conversion-to-pdf.md)
- [macOS](/blog/pdfjs-generating-pdf-thumbnails-pdf2pic.md)
- [Pdfjs Limitations Commercial Upgrade](/blog/pdfjs-limitations-commercial-upgrade.md)
- [Pdfjs Native Annotation Layer Forms](/blog/pdfjs-native-annotation-layer-forms.md)
- [Pdfjs Navigation Zoom Rotation](/blog/pdfjs-navigation-zoom-rotation.md)
- [Pdfjs Pdf Page Manipulation Pdf Lib](/blog/pdfjs-pdf-page-manipulation-pdf-lib.md)
- [Pdfjs React Viewer Setup](/blog/pdfjs-react-viewer-setup.md)
- [Pdfjs Rendering Overlays React Portals](/blog/pdfjs-rendering-overlays-react-portals.md)
- [Pdfjs Server Side Text Extraction](/blog/pdfjs-server-side-text-extraction.md)
- [Pdfjs Sticky Note Annotations](/blog/pdfjs-sticky-note-annotations.md)
- [Pdfjs Text Highlight Annotations](/blog/pdfjs-text-highlight-annotations.md)
- [Pdfjs Text Search Pdffindcontroller](/blog/pdfjs-text-search-pdffindcontroller.md)
- [Pdfjs Thumbnail Sidebar](/blog/pdfjs-thumbnail-sidebar.md)
- [Process Flows](/blog/process-flows.md)
- [React Native Pdf Annotation](/blog/react-native-pdf-annotation.md)
- [Using Yarn](/blog/react-pdf-editor.md)
- [React Pdf Loading States Errors Passwords](/blog/react-pdf-loading-states-errors-passwords.md)
- [React Pdf Setup Basic Rendering](/blog/react-pdf-setup-basic-rendering.md)
- [React Pdf Text Layer Custom Renderer](/blog/react-pdf-text-layer-custom-renderer.md)
- [Reducto Alternatives](/blog/reducto-alternatives.md)
- [Requisition System](/blog/requisition-system.md)
- [labels.py](/blog/route-documents-automatically-classify-api.md)
- [or](/blog/sample-blog-updated.md)
- [Sdk Product Updates Q2 2026](/blog/sdk-product-updates-q2-2026.md)
- [Add DWS MCP Server to your Claude Code project.](/blog/teaching-llms-to-read-pdfs.md)
- [Open an image file.](/blog/tesseract-python-guide.md)
- [Define the HTML part of the document.](/blog/top-10-ways-to-generate-pdfs-in-python.md)
- [Top 5 Javascript Pdf Viewers](/blog/top-5-javascript-pdf-viewers.md)
- [or](/blog/top-js-pdf-libraries.md)
- [Convert an HTML file to PDF.](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Vector Pdf](/blog/vector-pdf.md)
- [Wcag2 Accessibility Requirements Documents](/blog/wcag2-accessibility-requirements-documents.md)
- [Web Sdk Is Now Headless](/blog/web-sdk-is-now-headless.md)
- [What Are Annotations](/blog/what-are-annotations.md)
- [What Is A Vpat](/blog/what-is-a-vpat.md)
- [What Is Document Processing](/blog/what-is-document-processing.md)
- [What Is Intelligent Document Processing](/blog/what-is-intelligent-document-processing.md)
- [What Is Pdf Ua](/blog/what-is-pdf-ua.md)
- [Why Pdfium Is A Trusted Platform For Pdf Rendering](/blog/why-pdfium-is-a-trusted-platform-for-pdf-rendering.md)
- [Why Your Ai Agent Hallucinates Pdf Table Data](/blog/why-your-ai-agent-hallucinates-pdf-table-data.md)

