Download handler.py from clfegg/ocr-2512: direct link, hf CLI and curl.
- Browser
- Download file 1.73 kB
-
https://huggingface.co/clfegg/ocr-2512/resolve/main/handler.py
- Command line
-
hf download hf://clfegg/ocr-2512/handler.py
-
curl -L -o handler.py https://huggingface.co/clfegg/ocr-2512/resolve/main/handler.py
1.73 kB
| from typing import Dict, Any, List | |
| import os | |
| import base64 | |
| current_dir = os.getcwd() | |
| os.environ['HF_HOME'] = os.path.join(current_dir) | |
| os.environ['PAGINATE_OUTPUT']='True' | |
| from marker.convert import convert_single_pdf | |
| from marker.logger import configure_logging | |
| from marker.models import load_all_models | |
| from marker.output import save_markdown | |
| from io import BytesIO | |
| class EndpointHandler: | |
| def __init__(self, path=""): | |
| # Initialize the OCR model | |
| self.models = load_all_models() | |
| self.file_location = "input/temp.pdf" | |
| os.makedirs("input", exist_ok=True) | |
| def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]: | |
| """ | |
| data args: | |
| inputs (:obj: dict): A dictionary containing the inputs. | |
| max_pages (:obj: int): The maximum number of pages to process. | |
| file (:obj: str): The base64-encoded PDF file content. | |
| Return: | |
| A list of dictionaries containing the extracted text. | |
| """ | |
| inputs = data.get("inputs", {}) | |
| file_content = inputs.get("file") | |
| max_pages = inputs.get("max_pages", None) | |
| # Decode the base64-encoded file content | |
| file_bytes = base64.b64decode(file_content) | |
| self.upload_file(BytesIO(file_bytes)) | |
| pdf_path = self.file_location | |
| # Perform OCR on the input PDF | |
| extracted_text, _, _ = convert_single_pdf(pdf_path, self.models, max_pages=max_pages, langs=["vi"]) | |
| # Return the extracted text | |
| return [{"extracted_text": extracted_text}] | |
| def upload_file(self, file: BytesIO, max_pages: int = None): | |
| with open(self.file_location, "wb") as f: | |
| f.write(file.read()) | |
| return True |