---
name: PDF Processing Pro
description: "สกิลสำหรับ PDF Processing PRO ใช้เมื่อต้องการแนวทาง ขั้นตอน Template หรือคำแนะนำเชิงปฏิบัติสำหรับงานกฎหมาย นโยบาย Compliance เอกสารสัญญา และเอกสารเทคนิคที่ต้องมีโครงสร้างชัดเจน ในหัวข้อนี้"
---

# PDF Processing PRO

Production-ready PDF processing toolkit with pre-built scripts, comprehensive error handling, and support for complex workflows.

## Quick start

### Extract text from PDF

```python
import pdfplumber

with pdfplumber.open("document.PDF") as PDF:
    text = PDF.pages[0].extract_text()
    print(text)
```

### Analyze PDF form (using included script)

```bash
python scripts/analyze_form.py input.PDF --output fields.JSON
# PDF Processing PRO
```

### Fill PDF form with validation

```bash
python scripts/fill_form.py input.PDF data.JSON output.PDF
# PDF Processing PRO
```

### Extract tables from PDF

```bash
python scripts/extract_tables.py report.PDF --output tables.CSV
# PDF Processing PRO
```

## Features

### ✅ Production-ready scripts

All scripts include:
- **Error handling**: Graceful failures with detailed error messages
- **Validation**: Input validation and type checking
- **Logging**: Configurable logging with timestamps
- **Type hints**: Full type annotations for IDE support
- **CLI interface**: `--help` flag for all scripts
- **Exit codes**: Proper exit codes for automation

### ✅ Comprehensive workflows

- **PDF Forms**: Complete form processing pipeline
- **Table Extraction**: Advanced table detection and extraction
- **OCR Processing**: Scanned PDF text extraction
- **Batch Operations**: Process multiple PDFs efficiently
- **Validation**: Pre and post-processing validation

## Advanced topics

### PDF Form Processing

For complete form workflows including:
- Field analysis and detection
- Dynamic form filling
- Validation rules
- Multi-page forms
- Checkbox and radio button handling

See [FORMS.md](FORMS.md)

### Table Extraction

For complex table extraction:
- Multi-page tables
- Merged cells
- Nested tables
- Custom table detection
- Export to CSV/Excel

See [TABLES.md](TABLES.md)

### OCR Processing

For scanned PDFs and image-based documents:
- Tesseract integration
- Language support
- Image preprocessing
- Confidence scoring
- Batch OCR

See [OCR.md](OCR.md)

## Included scripts

### Form processing

**analyze_form.py** - Extract form field information
```bash
python scripts/analyze_form.py input.PDF [--output fields.JSON] [--verbose]
```

**fill_form.py** - Fill PDF forms with data
```bash
python scripts/fill_form.py input.PDF data.JSON output.PDF [--validate]
```

**validate_form.py** - Validate form data before filling
```bash
python scripts/validate_form.py data.JSON schema.JSON
```

### Table extraction

**extract_tables.py** - Extract tables to CSV/Excel
```bash
python scripts/extract_tables.py input.PDF [--output tables.CSV] [--format CSV|excel]
```

### Text extraction

**extract_text.py** - Extract text with formatting preservation
```bash
python scripts/extract_text.py input.PDF [--output text.txt] [--preserve-formatting]
```

### Utilities

**merge_pdfs.py** - Merge multiple PDFs
```bash
python scripts/merge_pdfs.py file1.PDF file2.PDF file3.PDF --output merged.PDF
```

**split_PDF.py** - Split PDF into individual pages
```bash
python scripts/split_PDF.py input.PDF --output-dir pages/
```

**validate_PDF.py** - Validate PDF integrity
```bash
python scripts/validate_PDF.py input.PDF
```

## Common workflows

### Workflow 1: Process form submissions

```bash
# PDF Processing PRO
python scripts/analyze_form.py template.PDF --output schema.JSON

# PDF Processing PRO
python scripts/validate_form.py submission.JSON schema.JSON

# PDF Processing PRO
python scripts/fill_form.py template.PDF submission.JSON completed.PDF

# PDF Processing PRO
python scripts/validate_PDF.py completed.PDF
```

### Workflow 2: Extract data from reports

```bash
# PDF Processing PRO
python scripts/extract_tables.py monthly_report.PDF --output data.CSV

# PDF Processing PRO
python scripts/extract_text.py monthly_report.PDF --output report.txt
```

### Workflow 3: Batch processing

```python
import glob
from pathlib import Path
import subprocess

# PDF Processing PRO
for pdf_file in glob.glob("invoices/*.PDF"):
    output_file = Path("processed") / Path(pdf_file).name

    result = subprocess.run([
        "python", "scripts/extract_text.py",
        pdf_file,
        "--output", str(output_file)
    ], capture_output=True)

    if result.returncode == 0:
        print(f"✓ Processed: {pdf_file}")
    else:
        print(f"✗ Failed: {pdf_file} - {result.stderr}")
```

## Error handling

All scripts follow consistent error patterns:

```python
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO

# PDF Processing PRO
result = subprocess.run(["python", "scripts/fill_form.py", ...])

if result.returncode == 0:
    print("Success")
elif result.returncode == 4:
    print("Validation failed - check input data")
else:
    print(f"Error occurred: {result.returncode}")
```

## Dependencies

All scripts require:

```bash
pip install pdfplumber pyPDF pillow pytesseract pandas
```

Optional for OCR:
```bash
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO
# PDF Processing PRO
```

## Performance tips

- **Use batch processing** for multiple PDFs
- **Enable multiprocessing** with `--parallel` flag (where supported)
- **Cache extracted data** to avoid re-processing
- **Validate inputs early** to fail fast
- **Use streaming** for large PDFs (>50MB)

## Best practices

1. **Always validate inputs** before processing
2. **Use try-except** in custom scripts
3. **Log all operations** for debugging
4. **Test with sample PDFs** before production
5. **Set timeouts** for long-running operations
6. **Check exit codes** in automation
7. **Backup originals** before modification

## Troubleshooting

### Common issues

**"Module not found" errors**:
```bash
pip install -r requirements.txt
```

**Tesseract not found**:
```bash
# PDF Processing PRO
```

**Memory errors with large PDFs**:
```python
# PDF Processing PRO
with pdfplumber.open("large.PDF") as PDF:
    for page in PDF.pages:
        text = page.extract_text()
        # Process page immediately
```

**Permission errors**:
```bash
chmod +x scripts/*.py
```

## Getting help

All scripts support `--help`:

```bash
python scripts/analyze_form.py --help
python scripts/extract_tables.py --help
```

For detailed documentation on specific topics, see:
- [FORMS.md](FORMS.md) - Complete form processing guide
- [TABLES.md](TABLES.md) - Advanced table extraction
- [OCR.md](OCR.md) - Scanned PDF processing
