原帖:https://baxin.netlify.app/build-text-extractor-python-under-30-lines/
从图像中提取文本,称为光学字符识别 (OCR),对于文档处理、数据提取和可访问性应用程序来说是一项很有价值的功能。在本指南中,我们将使用 Python 库创建一个 OCR 应用程序,例如用于 OCR 的 pytesseract、用于图像处理的 Pillow 以及用于构建交互式 UI 的 Gradio。我们将在 Hugging Face Spaces 上部署此应用程序。
开始之前,您需要一个 Hugging Face 帐户并对 Docker 有基本的了解。
要在具有所需系统依赖项的 Hugging Face Spaces 上部署(例如用于 OCR 的 Tesseract),我们需要一个用于配置环境的 Dockerfile。
创建一个包含以下内容的 Dockerfile:
# Use an official Python runtime as a parent image FROM python:3.12 ENV PIP_ROOT_USER_ACTION=ignore # Set the working directory in the container WORKDIR $HOME/app # Install system dependencies RUN apt-get update && apt-get install -y RUN apt-get install -y tesseract-ocr RUN apt-get install -y libtesseract-dev RUN apt-get install -y libgl1-mesa-glx RUN apt-get install -y libglib2.0-0 RUN pip install --upgrade pip # Copy requirements and install dependencies COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Copy the app code COPY app.py ./ # Expose the port for Gradio EXPOSE 7860 # Run the application CMD ["python", "app.py"]
import gradio as gr import pytesseract from PIL import Image import os def extract_text(image_path): if not image_path: return "No image uploaded. Please upload an image." if not os.path.exists(image_path): return f"Error: File not found at {image_path}" try: img = Image.open(image_path) text = pytesseract.image_to_string(img) return text if text.strip() else "No text detected in the image." except Exception as e: return f"An error occurred: {str(e)}" iface = gr.Interface( fn=extract_text, inputs=gr.Image(type="filepath", label="Upload an image"), outputs=gr.Textbox(label="Extracted Text"), title="Image Text Extractor", description="Upload an image and extract text from it using OCR." ) iface.launch(server_name="0.0.0.0", server_port=7860)
gradio pytesseract Pillow
此设置包括:
创建所有文件后,将它们推送到您的拥抱空间
以上是使用 Gradio 和 Hugging Face 在 Lines 下使用 Python 代码构建文本提取器应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!