---
title: "Automated PII redaction with Nutrient API: Detect and remove PII"
canonical_url: "https://www.nutrient.io/blog/automated-pii-removal/"
md_url: "https://www.nutrient.io/blog/automated-pii-removal.md"
last_updated: "2026-08-24T19:35:05.346Z"
description: "Implement automated PII redaction with Nutrient’s PII redaction API — AI-powered detection, regex rules, GDPR/HIPAA notes, and production-ready examples."
---

**TL;DR**

**Quick start** — Sign up for [Nutrient DWS Processor API](https://dashboard.nutrient.io/sign_up/?product=processor) → Get an API key → Choose [AI-powered](https://www.nutrient.io/api/ai-redaction-api/) (`/ai/redact`) or [regex-based](https://www.nutrient.io/api/redaction-api/) (`/build`) redaction → Receive a redacted document in seconds.

**Free tier** — Every account includes 50 free credits per month to prototype and test.

**What you’ll learn** — PII taxonomy, compliance considerations (GDPR and HIPAA), and end-to-end examples for both AI and regex methods.

Most organizations still redact manually or use basic regex. Both break on real documents, including scans, mixed layouts, and anything beyond plain text.

For example, regex catches `123-45-6789` but misses `SSN: 123 45 6789`. Manual reviewers create removable overlays and miss repeated mentions. Neither provides context awareness or audit trails for compliance.

## What is PII redaction?

PII redaction is the permanent removal of personally identifiable information from a document — not hiding it behind an overlay, but destroying the underlying text so it can’t be selected, copied, or recovered. A PII redaction API automates this: It accepts a document, detects PII (by semantic analysis, pattern matching, or both), and returns a redacted copy, with each detection logged for compliance evidence.

The distinction between redaction and masking matters legally. A black rectangle drawn over text is masking; the text underneath is still extractable. True redaction removes the content itself, which is what GDPR erasure requests and HIPAA de-identification actually require.

## PII taxonomy for automated detection

Personally identifiable information (PII) falls into four categories:

**Direct identifiers**

- Full names and aliases

- Government ID numbers (SSN, passport, driver’s license)

- Biometric data

- Account numbers

**Quasi-identifiers**

- Dates of birth

- Geographic locations

- Phone numbers

- Email addresses

**Sensitive personal data ([GDPR Article 9](https://gdpr-info.eu/art-9-gdpr/))**

- Health information

- Financial records

- Political opinions

- Religious beliefs

**Contextual PII**

- Employee ID numbers

- Customer reference codes

- Internal project names

Systems need to know when `123-456-7890` is a phone number versus a product code, or when `John Smith` refers to a person versus a street.

## Comparing redaction approaches

| Method               | How it works                                | Best use cases                                                                       | Limitations                                                                                 |
| -------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| Manual markup        | Human reviewers locate/cover sensitive text | Small document volumes, highly sensitive content requiring human judgment            | Time-consuming, inconsistent across reviewers, overlay redactions can leave text selectable |
| Regex patterns       | Static patterns for well-formed tokens      | Well-structured documents, known data formats, deterministic compliance requirements | Requires pattern maintenance for format variations, limited context awareness               |
| Basic ML classifiers | Snippet-level models without layout context | Simple classification tasks, limited entity types                                    | Poor at multipage context, hard to tune for diverse documents                               |
| AI-powered redaction | Context-aware entity recognition            | Diverse document types, complex layouts, contextual PII detection                    | Higher cost per page, requires confidence threshold tuning                                  |

Example: A legal document contains “Contact Sarah Johnson at 555-0123 regarding the Johnson account (#12345).”

- Regex flags the phone number but misses “Johnson account” as PII.

- Manual review catches both but overlooks “Sarah Johnson” in the footer.

- Context-aware redaction identifies all three instances.

## GDPR and HIPAA compliance contexts

Automated redaction must comply with data protection regulations that govern how PII is processed, stored, and deleted. Here’s how to align your implementation with the General Data Protection Regulation (GDPR) and the Health Insurance Portability and Accountability Act (HIPAA).

### GDPR requirements for automated processing

Under [GDPR Article 6](https://gdpr-info.eu/art-6-gdpr/), automated PII processing requires a lawful basis (e.g. legitimate interests, contractual necessity, or legal obligation). Core principles in [Article 5](https://gdpr-info.eu/art-5-gdpr/) apply:

- **Data minimization** — Only process data necessary for redaction

- **Purpose limitation** — Use extracted PII only for redaction, not analytics

- **Storage limitation** — Delete source documents immediately after processing

- **Accuracy** — Maintain audit logs of redaction decisions

- **Accountability** — Demonstrate compliance through technical and organizational measures

### HIPAA technical safeguards

Under HIPAA, healthcare organizations processing protected health information (PHI) must implement:

- **Access controls** — API authentication and role-based access

- **Audit controls** — Comprehensive logging of all redaction activities

- **Integrity** — Cryptographic verification of redaction completeness

- **Person authentication** — Strong API key management

- **Transmission security** — Transport Layer Security (TLS) for all API communications

Both frameworks require proof of system effectiveness through confidence scores and audit logs.

This guide provides technical implementation details and isn’t legal advice. Consult your legal counsel for specific compliance requirements in your jurisdiction and use case.

## Prerequisites

Before implementing automated PII redaction, you’ll need:

- A valid Nutrient API account with credits ([sign up here](https://dashboard.nutrient.io/sign_up/?product=processor))

- Basic understanding of REST APIs

- Python 3.7+ or cURL for testing

- PDF documents for testing redaction (you can use this [example document](https://www.nutrient.io/assets/nutrient-media/files/redaction.pdf) containing various PII types)

## How Nutrient handles redaction: AI and regex methods![Screenshot showing Nutrient’s two redaction approaches: AI-powered semantic analysis for complex documents and regex-based pattern matching for structured content](@/assets/images/blog/2026/automated-pii-removal/redaction-tools.png)

Nutrient provides two redaction methods to meet different requirements.

### AI-powered redaction API

The [AI-powered redaction API](https://www.nutrient.io/api/ai-redaction-api/) uses LLMs to identify PII through semantic analysis. While regex looks for patterns, AI understands meaning.

**How AI redaction works**

**Semantic understanding** — The AI sees “Routing No. 987654321” and knows it’s banking data, even with unusual formatting. It distinguishes “123-456-7890” as a phone number versus a product code and “John Smith” as a person versus a street name.

**Multimodal processing** — Text and scanned images are processed in a single pass. The AI can extract and redact PII from:

- Native PDF text

- Scanned documents (OCR processing)

- Mixed layouts with text and images

- Tables and complex document structures

**Confidence scoring** — Each detection gets a probability score, enabling you to:

- Set confidence thresholds for automatic redaction

- Stage borderline hits for human review

- Fine-tune precision and recall without code changes

**Key features**

- **Context-aware detection** — Distinguishes “Johnson” as a person versus a street name based on surrounding context

- **Entity recognition** — Personal data, payment information, medical terms, custom entities, and contextual PII

- **Compliance support** — GDPR, HIPAA, and SOC 2 Type 2, with comprehensive audit trails

- **API integration** — Compatible with existing platforms and automation tools

- **Zero infrastructure** — No servers, containers, or model updates to manage

**Processing workflow**

1. **Stream** — PDF is loaded into memory (never stored persistently)

2. **Analyze** — AI model performs semantic analysis of content and context

3. **Score** — Each potential PII detection receives a confidence score

4. **Stage or apply** — Based on configuration, redactions are staged for review or applied automatically

5. **Return** — Permanently redacted PDF with no recoverable content underneath black boxes

A 10-page contract that took 15 minutes to redact manually now takes 20 seconds. For more information, refer to our technical guide on [how AI redaction sets a new document security baseline](https://www.nutrient.io/blog/ai-pdf-redaction-dws-api/).

### Regex-based redaction API

For rule-based redaction, Nutrient’s [regex API](https://www.nutrient.io/api/redaction-api/) removes content matching specific patterns.

**Features**

- **Pattern-based redaction** — Find and redact using regex, keywords, or custom criteria

- **Preset pattern detection** — Built-in patterns for email addresses, phone numbers, URLs, and other common PII formats

- **Custom regex support** — Build search rules for industry-specific formats

- **Two-step process** — Create redaction annotations first, and then apply them for permanent removal

Both APIs delete documents immediately after processing. All communications use HTTPS encryption.

## API setup

To get your API credentials:

1. Sign up for a free account at [https://dashboard.nutrient.io/sign_up/?product=processor](https://dashboard.nutrient.io/sign_up/?product=processor).

2. Navigate to the API keys section in your dashboard.

3. Note your usage limits — You get 50 free credits monthly.![Nutrient dashboard showing API keys section with usage limits and credit balance for managing redaction operations](@/assets/images/blog/2026/automated-pii-removal/dashboard.png)

## Code path A: AI-powered PII detection and redaction

Here’s how to implement AI-powered PII detection and redaction.

### Basic redaction with cURL

This example sends a document with a criteria string, staging every detected PII match for review:

```bash

# Simple PII redaction.

curl -X POST https://api.nutrient.io/ai/redact \
  -H "Authorization: Bearer {NUTRIENT_API_KEY}" \
 -o result.pdf \
  --fail \
  -F file1=@redaction.pdf \
  -F data='{
      "documents": [
        {
          "documentId": "file1"
        }
      ],
      "criteria": "All personally identifiable information",
       "redaction_state": "stage"
    }'

```

### Stage vs. apply

Set how redactions are finalized via `redaction_state`:

- `"stage"` → creates reviewable annotations (text remains selectable)

- `"apply"` → permanently removes the underlying content (burn-in)

Here’s the minimal payload change needed:

```json

{
  "documents": [{"documentId": "file1"}],
  "criteria": "All personally identifiable information",
  "redaction_state": "stage"   // Review first (non-destructive).
}

```

```json

{
  "documents": [{"documentId": "file1"}],
  "criteria": "All personally identifiable information",
  "redaction_state": "apply"   // burn-in (permanent).
}

```

Start with `"stage"` to validate results, and then switch to `"apply"` for production.

### PII redaction in Python

The same request looks like this using Python’s `requests` library:

```python

import requests
import json

response = requests.request(
  'POST',
  'https://api.nutrient.io/ai/redact',
  headers = {
    'Authorization': 'Bearer {NUTRIENT_API_KEY}'  # Replace with your actual API key.

  },
  files = {
    'file1': open('redaction.pdf', 'rb')
  },
  data = {
    'data': json.dumps({
      'documents': [
        {
          'documentId': 'file1'
        }
      ],
      'criteria': 'All personally identifiable information',
      "redaction_state": "stage" # or "apply" for permanent redaction.

    })
  },
  stream = True
)

if response.ok:
  with open('result.pdf', 'wb') as fd:
    for chunk in response.iter_content(chunk_size=8096):
      fd.write(chunk)
else:
  print(response.text)
  exit()

```

## Code path B: Regex-based redaction

For deterministic redaction, use the regex API with preset patterns or custom rules.

### Basic redaction with Python

This example creates redaction annotations for every occurrence of a search term, and then applies them permanently in the same request:

```python

import requests
import json

response = requests.request(
  'POST',
  'https://api.nutrient.io/build',
  headers = {
    'Authorization': 'Bearer {NUTRIENT_API_KEY}'  # Replace with your actual API key.

  },
  files = {
    'document': open('redaction.pdf', 'rb')
  },
  data = {
    'instructions': json.dumps({
      'parts': [
        {
          'file': 'document'
        }
      ],
      'actions': [
        {
          'type': 'createRedactions',
          'strategy': 'text',
          'strategyOptions': {
            'text': 'acme',
            'includeAnnotations': True,
            'caseSensitive': False
          }
        },
        {
          'type': 'applyRedactions' # createRedactions only for review.

        }
      ]
    })
  },
  stream = True
)

if response.ok:
  with open('result.pdf', 'wb') as fd:
    for chunk in response.iter_content(chunk_size=8096):
      fd.write(chunk)
else:
  print(response.text)
  exit()

```

### Stage vs. apply (regex “build” flow)

Regex and preset redaction is a two-step pipeline:

1. `createRedactions` → marks regions (stage)

2. `applyRedactions` → burns in redactions (apply)

If you omit the `applyRedactions` step, you’ll only see visual boxes, and the underlying text will still be present.

For SDK-based implementations with built-in UI components, refer to our [document redaction SDK guide](https://www.nutrient.io/sdk/solutions/redaction/). For broader automation patterns, explore [dynamic document redaction](https://www.nutrient.io/blog/document-redaction/) workflows.

## Troubleshooting

**Common API errors:**

- `401 Unauthorized` — Check your API key in the Authorization header

- `413 Payload Too Large` — File exceeds 100 MB limit, consider splitting large documents

- `429 Rate Limit Exceeded` — Implement retry logic with exponential backoff

- `422 Unprocessable Entity` — Verify PDF isn’t password-protected or corrupted

## FAQ

#### What is a PII redaction API?

A PII redaction API is a web service that detects and permanently removes personally identifiable information from documents programmatically. Instead of installing redaction software or reviewing documents by hand, an application sends a document to an endpoint (such as `https://api.nutrient.io/ai/redact`) and receives a redacted copy back — with the underlying text destroyed, not merely covered. Nutrient’s PII redaction API supports both AI-based semantic detection and deterministic regex rules, plus staged review before redactions are applied.

#### How do I get started with 50 free credits?

Sign up at [dashboard.nutrient.io](https://dashboard.nutrient.io/sign_up/?product=processor) and you’ll receive 50 free credits immediately. At 0.05 credits per page for AI redaction, that covers up to 1,000 pages per month; at one credit per document for regex-based redaction, that covers 50 documents. Credits renew monthly.

#### What’s the pricing after my free credits?

AI redaction costs 0.05 credits per page; regex-based redaction costs one credit per document. Once you use your monthly free credits, additional usage draws from your plan’s credit balance.

#### AI vs. regex: Which redaction method should I choose?

Use AI redaction (0.05 credits per page) when you need semantic understanding — the AI analyzes context to distinguish “Johnson” as a person vs. a street name, processes scanned documents with OCR, and handles mixed layouts. The LLM provides confidence scores for each detection, enabling you to set thresholds for automatic vs. manual review.

Use regex-based (one credit per document) for deterministic patterns in well-structured content where you need predictable rule-based matching. Both methods support permanent redaction and auditability.

#### How does AI redaction actually work under the hood?

AI redaction uses LLMs for semantic understanding. Your PDF streams into memory (never stored), the AI analyzes context — seeing “Routing No. 123456789” as banking data regardless of format — assigns confidence scores, and then returns permanently redacted PDFs where text is truly destroyed, not just hidden.

Unlike regex, it understands context: “123-456-7890” as a phone number vs. a product code, and “John Smith” as a person vs. a street name.

#### Which file formats can I use with my free account?

PDF is fully supported. Office files (Word, Excel, PowerPoint) can be converted to PDF first using Nutrient’s [conversion APIs](https://www.nutrient.io/api/converter-api/); conversion usage also consumes credits.

For complete format support and pricing details, see our [API documentation](https://www.nutrient.io/api/).

## Conclusion

If your documents are messy, scanned, or context-heavy, choose AI redaction; if they’re structured and predictable, choose regex and preset redaction. Either way, you get true removal (not overlays) plus the auditability compliance teams expect.

A simple rule for rollout: Start in `"stage"` to validate what gets flagged, and then switch to `"apply"` to burn it in for production.

**Ship it this week**

- **Try it for free** — [Create an account](https://dashboard.nutrient.io/sign_up/?product=processor) and you’ll get 50 monthly credits to test.

- **Go AI first** — Read the [AI redaction API](https://www.nutrient.io/api/ai-redaction-api/) guide for guidance on scans and mixed layouts.

- **Lock down patterns** — Use the [regex redaction API](https://www.nutrient.io/api/redaction-api/) for deterministic rules.

Protect sensitive data, prove compliance, and reclaim engineering hours with a couple of API calls.
---

## 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)
- [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 Parsing Apis](/blog/best-document-parsing-apis.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)
- [React Pdf Annotation Layer Forms](/blog/react-pdf-annotation-layer-forms.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)

