Version final

This commit is contained in:
Jhonathan Guevara 2025-12-31 15:42:40 -05:00
parent 2cc235e765
commit e7d3ab34ed
Signed by: jhonathan_guevara
GPG Key ID: 619239F12DCBE55B

View File

@ -301,40 +301,47 @@ python3 -c "import pandas, openpyxl, dotenv; print('OK', pandas.__version__, ope
``` ```
#### 7.7) OCR (PDF real + escaneado) con Tesseract (Alpine) #### 7.7) OCR (PDF real + escaneado) con Tesseract (Alpine)
Si necesitas leer PDFs escaneados para el autorrelleno, usa este flujo.
**Instalacion OCR en Alpine (servidor)**
Si el backend dice "OCR no disponible", instala esto en Alpine:
```bash ```bash
# 1) Paquetes del sistema (OCR + deps de Python)
# 1) Asegura repo community (donde esta ocrmypdf/tesseract-data)
ALPINE_VER="$(cut -d. -f1,2 /etc/alpine-release)"
sed -i 's/^#\(.*\/community\)/\1/' /etc/apk/repositories
grep -q "/v${ALPINE_VER}/community" /etc/apk/repositories || \
echo "https://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VER}/community" >> /etc/apk/repositories
# 2) Instala herramientas: pdftotext (poppler), ocrmypdf, tesseract + idiomas
apk update apk update
apk add --no-cache \ apk add --no-cache \
poppler-utils \ tesseract-ocr \
ocrmypdf \
tesseract-ocr-data-spa \ tesseract-ocr-data-spa \
tesseract-ocr-data-eng tesseract-ocr-data-eng \
python3 py3-pip py3-virtualenv \
build-base python3-dev musl-dev \
libffi-dev openssl-dev zlib-dev \
jpeg-dev tiff-dev freetype-dev lcms2-dev openjpeg-dev
# 3) Procesa el PDF (real/escaneado/mixto) # 2) Venv (si ya tienes /opt/saludut/venv, solo activalo)
IN="${1:-archivo.pdf}" python3 -m venv /opt/saludut/venv
BASE="${IN%.pdf}" . /opt/saludut/venv/bin/activate
TXT="${BASE}.txt"
OCRPDF="${BASE}.ocr.pdf"
# Intenta extraer texto directo # 3) Librerias Python usadas por el extractor
pdftotext -layout "$IN" - > "$TXT" 2>/dev/null || true pip install --upgrade pip
pip install pdfplumber pymupdf pytesseract pillow
# Si el texto es muy corto, probablemente es escaneado (o casi todo imagen) -> OCR
LEN="$(tr -d '[:space:]' < "$TXT" | wc -c | tr -d ' ')"
if [ "${LEN:-0}" -lt 80 ]; then
ocrmypdf -l spa+eng --skip-text --rotate-pages --deskew --optimize 3 "$IN" "$OCRPDF"
pdftotext -layout "$OCRPDF" "$TXT"
echo "OK (OCR aplicado cuando hacia falta): $OCRPDF | Texto: $TXT"
else
echo "OK (PDF con texto): Texto: $TXT"
fi
``` ```
En `backend/.env` agrega (o ajusta):
```
PYTHON_PATH=/opt/saludut/venv/bin/python
TESSERACT_PATH=/usr/bin/tesseract
TESSDATA_PREFIX=/usr/share/tessdata
```
Verificacion:
```bash
tesseract --list-langs | grep spa
/opt/saludut/venv/bin/python -c "import pytesseract; print(pytesseract.get_tesseract_version())"
```
Reinicia el backend:
```bash
rc-service saludut-backend restart
```