teste_laudos / utils /docx_loader.py
gui-sparim's picture
Update utils/docx_loader.py
a7cd783 verified
"""
Utilitários para leitura e manipulação de arquivos DOCX.
"""
from docx import Document
from pathlib import Path
from typing import Optional, Union
def ler_texto_docx(caminho_arquivo: Union[str, Path]) -> str:
"""
Lê conteúdo de texto de um arquivo DOCX.
Args:
caminho_arquivo: Caminho para o arquivo DOCX
Returns:
Texto do documento com parágrafos separados por quebras duplas de linha
"""
caminho = Path(caminho_arquivo)
if not caminho.exists():
return ""
try:
doc = Document(str(caminho))
return "\n\n".join(p.text for p in doc.paragraphs if p.text.strip())
except Exception as e:
print(f"Erro ao ler arquivo DOCX {caminho}: {e}")
return ""
def mesclar_documento_fotos(
doc_principal: Document,
caminho_fotos: Optional[Union[str, Path]]
) -> Document:
"""
Mescla documento de registro fotográfico ao documento principal.
Args:
doc_principal: Objeto Document principal do laudo
caminho_fotos: Caminho para o arquivo DOCX de registro fotográfico
Returns:
Documento mesclado (ou original se não houver documento de fotos)
"""
if not caminho_fotos:
return doc_principal
caminho = Path(caminho_fotos)
if not caminho.exists():
return doc_principal
try:
from docxcompose.composer import Composer
# Adicionar quebra de página antes de mesclar o registro fotográfico
doc_principal.add_page_break()
doc_fotos = Document(str(caminho))
composer = Composer(doc_principal)
composer.append(doc_fotos)
return composer.doc
except ImportError:
print("docxcompose não instalado. Execute: pip install docxcompose")
return doc_principal
except Exception as e:
print(f"Erro ao mesclar documento de fotos: {e}")
return doc_principal