annator / src /agents /ocr_agent.py
techprotrade's picture
Add src directory
734b5b4 verified
Raw
History Blame Contribute Delete
963 Bytes
from __future__ import annotations
from pathlib import Path
import io
import fitz
from PIL import Image
import pytesseract
from src.services.tesseract_service import TesseractService
class OfflineOCRAgent:
name = "ocr_agent"
def __init__(self):
self.tesseract = TesseractService()
def run(self, input_pdf: Path, output_pdf: Path, language: str = "eng") -> Path:
self.tesseract.ensure_available()
src = fitz.open(input_pdf)
out = fitz.open()
for page in src:
pix = page.get_pixmap(dpi=300, alpha=False)
img = Image.open(io.BytesIO(pix.tobytes("png")))
pdf_bytes = pytesseract.image_to_pdf_or_hocr(img, extension="pdf", lang=language)
ocr_doc = fitz.open("pdf", pdf_bytes)
out.insert_pdf(ocr_doc)
output_pdf.parent.mkdir(parents=True, exist_ok=True)
out.save(output_pdf, garbage=4, deflate=True, clean=True)
return output_pdf