diff --git a/packages/google-cloud-documentai-toolbox/google/cloud/documentai_toolbox/wrappers/document.py b/packages/google-cloud-documentai-toolbox/google/cloud/documentai_toolbox/wrappers/document.py
index 6ef5200e7c71..a7535676a375 100644
--- a/packages/google-cloud-documentai-toolbox/google/cloud/documentai_toolbox/wrappers/document.py
+++ b/packages/google-cloud-documentai-toolbox/google/cloud/documentai_toolbox/wrappers/document.py
@@ -943,7 +943,8 @@ def export_hocr_str(self, title: str) -> str:
A string hOCR version of the Document
"""
environment = Environment(
- loader=PackageLoader("google.cloud.documentai_toolbox", "templates")
+ loader=PackageLoader("google.cloud.documentai_toolbox", "templates"),
+ autoescape=True,
)
template = environment.get_template("hocr_document_template.xml.j2")
content = template.render(pages=self.pages, title=title)
diff --git a/packages/google-cloud-documentai-toolbox/tests/unit/test_document.py b/packages/google-cloud-documentai-toolbox/tests/unit/test_document.py
index b9c7d448df1c..ff91d45c5893 100644
--- a/packages/google-cloud-documentai-toolbox/tests/unit/test_document.py
+++ b/packages/google-cloud-documentai-toolbox/tests/unit/test_document.py
@@ -949,6 +949,23 @@ def test_export_hocr_str_with_escape_characters():
assert actual_hocr == expected
+def test_export_hocr_str_escapes_title():
+ wrapped_document = document.Document.from_document_path(
+ document_path="tests/unit/resources/0/toolbox_invoice_test-0.json"
+ )
+
+ actual_hocr = wrapped_document.export_hocr_str(
+ title=""
+ )
+
+ assert "" not in actual_hocr
+
+ element = ElementTree.fromstring(actual_hocr)
+ assert element is not None
+ title_element = element.find(".//{http://www.w3.org/1999/xhtml}title")
+ assert title_element.text == ""
+
+
def test_document_to_merged_documentai_document(get_bytes_multiple_files_mock):
wrapped_document = document.Document.from_gcs(
gcs_bucket_name="test-directory", gcs_prefix="documentai/output/123456789/1/"