{% extends "base.html" %} {% block title %}Document Detail {% endblock %} {% block content %} {% if error == "line_count_mismatch" %}
Could not save reviewed OCR because line count did not match OCR layout. Expected {{ error_expected }}, got {{ error_actual }}.
{% elif error == "save_ocr_corrected_failed" %}
Could not save OCR-corrected PDF. Check that reviewed OCR line count matches raw OCR line count.
{% elif success == "rerun_ocr" %}
OCR rerun successfully.
{% elif success == "regenerated_line_items" %}
Line items regenerated successfully.
{% elif success == "saved_replica_pdf" %}
Replica PDF saved.
{% elif success == "diagnostic_docx_saved" %}
Diagnostic DOCX saved.
{% elif success == "saved_reviewed_ocr" %}
Reviewed OCR saved.
{% elif success == "saved_replica_pdf" %}
Replica PDF saved.
{% elif success == "saved_reviewed_ocr" %}
Reviewed OCR saved.
{% elif error == "rerun_ocr_failed" %}
OCR rerun failed.
{% elif error == "deprecated_pdf_route_disabled" %}
This deprecated PDF save route has been disabled. Use Save Document instead.
{% elif error == "clean_replica_requires_layout_ocr" %}
Clean replica could not be generated from the current OCR because this document does not yet have usable positional layout data. Run layout-capable OCR next, then save the replica again.
{% elif error == "save_replica_pdf_failed" %}
Could not save replica PDF.
{% elif error == "save_field_enriched_failed" %}
Could not save field-enriched PDF.
{% endif %}

{{ document.document_id }}

{{ document.original_filename or document.canonical_filename or document.document_type }}

{{ document.review_status }} {% if review_state and review_state.reviewed_at %} doc reviewed {% endif %} {% if review_state and review_state.is_approved %} approved {% endif %} {% if review_state and review_state.is_excluded %} excluded {% endif %} {{ document.document_type }} {{ document.mime_type }}
Back to Queue {% if next_ocr_doc %} Next in Queue {% elif next_fields_doc %} Next in Queue {% elif next_doc %} Next in Queue {% endif %}
{% if success == "saved_replica_pdf_debug_overlay" %}
Debug overlay PDF saved.
{% endif %} {% if error == "save_replica_pdf_debug_overlay_failed" %}
Could not save debug overlay PDF.
{% endif %} {% if error == "storage_unavailable" %}
Storage mount unavailable. Please retry in a moment.
{% endif %} {% if error == "clean_replica_has_no_renderable_lines" %}
Clean replica could not be generated because this document does not yet have usable text layout data. Save the scan-backed replica for now, or re-run OCR/review first.
{% endif %}

Document preview

Scan {% if replica_clean_output %} Replica {% endif %} {% if replica_debug_overlay_output %} Replica (Debug) DOCX {% endif %}
{% if overlay_page_data %}
Diagnostics:
{% set selected_diag = diagnostic_outputs | selectattr("is_selected") | list | first %} {% set default_diag = selected_diag or (diagnostic_outputs | selectattr("file_path") | list | first) %} {% if diagnostic_outputs %}
View Download {% else %} none {% endif %}
{% endif %}
{% if not storage_available %}

Storage mount unavailable. Preview is temporarily unavailable.

{% elif file_url %} {% if viewer_source == "docx" %}
{% elif document.mime_type == "application/pdf" %}
{% if overlay_page_data %}
{% endif %}
{% elif document.mime_type in ["image/jpeg", "image/png"] %} Document image {% else %}

Open file

{% endif %} {% else %}

No preview available.

{% endif %}

Reviewed OCR

{% if current_text_version %}

Current OCR version: v{{ current_text_version.version_number }} — {{ current_text_version.version_type }} — {{ current_text_version.created_at }}

{% else %}

No OCR version available yet.

{% endif %}

Expected OCR lines: {{ expected_line_count }}   |   Current editor lines: {{ actual_line_count }}

{% for n in line_numbers %}{{ n }}
{% endfor %}
{% for flag in quality_flag_options %} {% endfor %}
{% if layout_review_image_url and layout_review_pages %}
Tools
Edit
100%
Zoom
OCR Text 11
Font
Display
Selection
Ready
Document
Layout review page
boot
Selected word

Selected word

{% else %}

No layout review data available yet.

{% endif %}

Extracted fields

{% if current_extracted_version_number %} {% set current_extracted_meta = ( extracted_version_options | selectattr(0, "equalto", current_extracted_version_number) | list | first ) %}

Current extracted version: v{{ current_extracted_version_number }} {% if current_extracted_meta %}— {{ current_extracted_meta[1] }}{% endif %}

{% endif %} {% if current_extracted %} {% else %}

No extracted fields saved yet.

{% endif %}
1

Additional fields

{% if current_additional_version_number %}{% set current_additional_meta = ( additional_version_options | selectattr(0, "equalto", current_additional_version_number) | list | first ) %}

Current additional version: v{{ current_additional_version_number }} {% if current_additional_meta %}— {{ current_additional_meta[1] }}{% endif %}

{% endif %} {% if current_additional %} {% else %}

No additional fields saved yet.

{% endif %} {% if presets %}
Manage presets
{% else %} {% endif %}

Line Items

{% if current_line_item_version %}

Current line item version: v{{ current_line_item_version.version_number }} — {{ current_line_item_version.created_at }}

{% else %}

No line items saved yet.

{% endif %}
{% set base_count = line_items|length %} {% set row_count = base_count if base_count > 0 else 0 %}
{% for i in range(row_count) %} {% set item = line_items[i] if i < line_items|length else none %} {% endfor %}
# Date Description Qty Unit Total Tax Category Notes
{{ i + 1 }}

Document versions

{% if version_rows %}
{% for version, file_exists in version_rows %} {% endfor %}
Version Type Path Size Created Notes
v{{ version.version_number }} {{ version.version_type }} {{ version.file_path }}
{% if file_exists %} Available {% endif %}
{{ human_size(version.file_size_bytes) }} {{ version.created_at }} {{ version.notes or "" }}
{% else %}

No versions found.

{% endif %}

Source Options

Restore from version history

Raw OCR

{% if raw_ocr %}
Text versionv{{ raw_ocr.version_number }}
OCR engine{{ raw_ocr.ocr_engine or "unknown" }}
Engine version{{ raw_ocr.ocr_engine_version or "unknown" }}
Rerun source{{ raw_ocr.rerun_source or "unknown" }}
Quality score{{ raw_ocr.quality_score if raw_ocr.quality_score is not none else "not scored yet" }}
Quality note{{ raw_ocr.quality_note or "" }}

Quality flags: {{ raw_ocr.quality_flags if raw_ocr and raw_ocr.quality_flags else [] }}

{{ raw_ocr.text_content }}
{% else %}

No raw OCR text found.

{% endif %}

Metadata

Type{{ document.document_type }}
Review status{{ document.review_status }}
Source path{{ document.source_path }}
Current path{{ document.current_path }}
Original filename{{ document.original_filename }}
Canonical filename{{ document.canonical_filename }}
MIME type{{ document.mime_type }}
File size{{ human_size(document.file_size) }}
Page count{{ document.page_count }}
Share path{{ document.share_path or "" }}
Created at{{ document.created_at }}
Updated at{{ document.updated_at }}
{% endblock %}