PDF Processing Limits Optimization
Version Implemented: 0.229.001
Problem Statement
The SmartHttpPlugin had inconsistent and overly restrictive PDF processing limits that didn't align with Azure Document Intelligence's actual capabilities, causing legitimate PDFs to be rejected or truncated.
Root Cause Analysis
Previous Issues:
- Inconsistent Size Limits: Download limit of 2.25MB but Azure DI check for 500MB
- Arbitrary Character Limits: 225k character summarization trigger had no basis in actual model capabilities
- Poor User Experience: Users hit artificial limits before reaching actual service limits
- Truncation Bugs: PDFs like the 1.5MB NIST document were being corrupted by download truncation
Technical Details:
- Base limit calculation:
75k chars × 30 = 2.25MB(too restrictive) - Azure DI actual limits: 500MB (S0 tier), 4MB (F0 tier)
- Processing limits based on arbitrary multiples rather than token limits
Solution Implementation
New PDF Processing Limits:
Download Limits:
PDFs: 100MB (aligns with Azure DI capabilities)
Other content: 150KB (2 × base limit)
Processing Limits:
Token-based limits: 100,000 tokens (~400,000 characters)
Summarization trigger: Based on model context limits, not arbitrary counts
Azure DI size check: 500MB (unchanged)
Benefits:
- Aligned with Azure Services: Limits now match actual Azure DI capabilities
- Better User Experience: Legitimate PDFs no longer rejected by artificial limits
- Token-Aware Processing: Summarization based on actual model token limits
- Scalable Approach: Can handle academic papers, government documents, technical manuals
Real-World Impact:
| Document Type | Size Range | Previous Support | New Support |
|---|---|---|---|
| NIST Documents | 1-2MB | ⚠️ Barely supported | ✅ Fully supported |
| Academic Papers | 2-10MB | ❌ Rejected | ✅ Fully supported |
| Government Docs | 10-50MB | ❌ Rejected | ✅ Fully supported |
| Technical Manuals | 50-100MB | ❌ Rejected | ✅ Fully supported |
Code Changes
Key Files Modified:
smart_http_plugin.py: Updated size limit calculations and processing logicconfig.py: Version updated to 0.228.027
Specific Changes:
Download Limits:
# Before size_limit = self.max_content_size * 30 # 2.25MB # After size_limit = 100 * 1024 * 1024 # 100MBProcessing Limits:
# Before if len(full_text) > self.max_content_size * 3: # 225k chars # After max_tokens_for_processing = 100000 # 100k tokens max_chars_for_processing = max_tokens_for_processing * 4 # 400k chars if len(full_text) > max_chars_for_processing:
Testing and Validation
Functional Tests Created:
test_pdf_processing_limits_update.py: Validates new limit configurationstest_nist_pdf_url_processing_fix.py: Ensures NIST PDF processing works correctly
Test Results:
✅ PDF download limit: 100MB (appropriate for Azure DI)
✅ Processing limit: 400k characters (substantial content support)
✅ NIST PDF: Fully supported (1.4MB)
✅ Academic papers: Supported up to 5MB+
✅ Large manuals: Supported up to 50MB+
Performance Impact
Positive Impacts:
- Reduced Rejections: Fewer legitimate PDFs rejected by artificial limits
- Better Throughput: Larger documents can be processed without truncation
- Improved Accuracy: Complete content extraction prevents information loss
Considerations:
- Memory Usage: Larger PDFs require more memory during processing
- Processing Time: Larger documents take longer to process
- Token Consumption: Larger extracts may use more AI tokens for summarization
Future Considerations
- Dynamic Tier Detection: Could detect Azure DI tier (S0 vs F0) and adjust limits accordingly
- Progressive Processing: For very large PDFs, could implement progressive chunk processing
- Caching: Could implement caching for frequently accessed large documents
- User Feedback: Could provide real-time feedback for large document processing
Configuration Options
The limits can be adjusted by modifying the SmartHttpPlugin initialization:
# Conservative approach (current default)
plugin = SmartHttpPlugin(max_content_size=75000) # Affects base calculations
# For environments with higher capacity
plugin = SmartHttpPlugin(max_content_size=150000) # Would increase all limits proportionally
Monitoring and Metrics
Track these metrics to ensure optimal performance:
- PDF processing success rates
- Average processing times by document size
- Azure DI API usage and limits
- User feedback on document processing capabilities
Conclusion
This optimization brings PDF processing limits in line with actual service capabilities while maintaining intelligent content management through token-aware summarization. The result is a much better user experience for processing legitimate business documents of varying sizes.