# paddleocr-api **Repository Path**: xskywalker/paddleocr-api ## Basic Information - **Project Name**: paddleocr-api - **Description**: 基于百度的PaddleOCR 搭建的API服务 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-20 - **Last Updated**: 2024-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PaddleOCR API 本地开发环境搭建教程 ## 目录 1. [前提条件](#1-前提条件) 2. [下载基础镜像](#2-下载基础镜像) 3. [准备项目文件](#3-准备项目文件) 4. [创建 Dockerfile](#4-创建-dockerfile) 5. [构建 Docker 镜像](#5-构建-docker-镜像) 6. [运行 Docker 容器](#6-运行-docker-容器) 7. [开发工作流程](#7-开发工作流程) 8. [生产环境部署](#8-生产环境部署) 9. [常见问题解答](#9-常见问题解答) ## 1. 前提条件 在开始之前,请确保您的系统已经安装了以下软件: - Docker Desktop(对于 Windows 和 Mac 用户)或 Docker Engine(对于 Linux 用户) - Git(用于版本控制,可选) - 文本编辑器(如 Visual Studio Code, Sublime Text 等) ## 2. 下载基础镜像 首先,我们需要下载 PaddlePaddle 的基础镜像。打开命令行界面(Windows 用户使用 PowerShell 或 CMD,Mac/Linux 用户使用终端),然后运行以下命令: ```bash docker pull registry.baidubce.com/paddlepaddle/paddle:2.5.0 ``` 这个命令从百度的 Docker 仓库拉取 PaddlePaddle 2.5.0 版本的镜像。这可能需要一些时间,取决于您的网络速度。 ## 3. 准备项目文件 创建一个新的目录用于您的项目,并进入该目录: ```bash mkdir paddleocr-api cd paddleocr-api ``` 在这个目录中,创建以下文件: 1. `app.py`:主应用程序文件 2. `requirements.txt`:Python 依赖列表 3. `Dockerfile`:用于构建 Docker 镜像的文件 ## 4. 创建 Dockerfile 使用文本编辑器创建 `Dockerfile`,内容如下: ```dockerfile FROM registry.baidubce.com/paddlepaddle/paddle:2.5.0 WORKDIR /app COPY requirements.txt . # 设置pip超时时间和使用清华大学镜像源 RUN pip config set global.timeout 1000 && \ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 更新 pip 并清除缓存 RUN pip install --upgrade pip && \ pip install --no-cache-dir --upgrade setuptools wheel && \ rm -rf ~/.cache/pip # 分步安装依赖,指定版本并使用 --trusted-host RUN pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn pydantic==2.5.2 && \ pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn fastapi==0.103.2 && \ pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn uvicorn[standard] && \ pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn paddleocr && \ pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn pillow && \ pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn httpx # 安装其他可能的依赖 RUN pip install --no-cache-dir --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt COPY . . CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "5000", "--reload"] ``` 这个 Dockerfile 做了以下几件事: - 使用 PaddlePaddle 2.5.0 作为基础镜像 - 设置工作目录为 `/app` - 配置 pip 使用清华大学的镜像源并增加超时时间 - 更新 pip 和其他基础包 - 分步安装主要依赖 - 安装 `requirements.txt` 中列出的其他依赖 - 复制所有项目文件到容器中 - 设置启动命令为运行 uvicorn 服务器 ## 5. 构建 Docker 镜像 在项目目录中,运行以下命令来构建 Docker 镜像: ```bash docker build -t paddleocr-api:dev . ``` 这个命令会根据 Dockerfile 构建一个名为 `paddleocr-api` 的镜像,标签为 `dev`。 ## 6. 运行 Docker 容器 构建完成后,使用以下命令运行容器: ### Windows (PowerShell): ```powershell docker run -p 5000:5000 -v ${PWD}:/app paddleocr-api:dev ``` ### macOS/Linux: ```bash docker run -p 5000:5000 -v $(pwd):/app paddleocr-api:dev ``` 这个命令做了以下几件事: - `-p 5000:5000`: 将容器的 5000 端口映射到主机的 5000 端口 - `-v ${PWD}:/app` 或 `-v $(pwd):/app`: 将当前目录挂载到容器的 `/app` 目录,实现文件同步 - `paddleocr-api:dev`: 指定要运行的镜像名称和标签 ### Windows 环境下的特殊说明 由于 Windows PowerShell 中 `$(pwd)` 的使用方式不同于 Linux 或 macOS,您可能需要使用不同的语法来表示当前目录。以下是在 Windows 环境下运行这个命令的几种方法: 1. 使用 PowerShell 的 `${PWD}` 语法(如上面的示例): ```powershell docker run -p 5000:5000 -v ${PWD}:/app paddleocr-api:dev ``` 2. 使用完整的路径(推荐,因为更明确): ```powershell docker run -p 5000:5000 -v D:\path\to\your\project:/app paddleocr-api:dev ``` 请将 `D:\path\to\your\project` 替换为您项目的实际路径。 3. 使用 PowerShell 的 `$PWD` 变量: ```powershell docker run -p 5000:5000 -v "$($PWD.Path):/app" paddleocr-api:dev ``` 4. 如果您使用的是 CMD 而不是 PowerShell,可以使用 `%cd%`: ```cmd docker run -p 5000:5000 -v %cd%:/app paddleocr-api:dev ``` 5. 使用 PowerShell 的 `Get-Location` cmdlet: ```powershell docker run -p 5000:5000 -v "$(Get-Location):/app" paddleocr-api:dev ``` 选择最适合您的方法,确保 Docker 可以正确访问您的项目目录。 现在,您的 API 应该在 `http://localhost:5000` 上运行。 ## 7. 开发工作流程 1. 修改 `app.py` 或其他 Python 文件 2. 保存文件 3. 由于使用了 `--reload` 选项,uvicorn 会自动重新加载应用 4. 在浏览器中测试您的 API(`http://localhost:5000`) ## 8. 生产环境部署 对于生产环境,我们使用优化后的 Dockerfile 来构建和运行容器。 ### 构建生产镜像 在项目根目录下运行以下命令来构建生产镜像: ```bash docker build -t paddleocr-api:prod -f Dockerfile.prod . ``` 这个命令会使用项目根目录下的 `Dockerfile` 文件来构建一个标签为 `prod` 的 `paddleocr-api` 镜像。 ### 运行生产容器 构建完成后,使用以下命令运行生产容器: ```bash docker run -d -p 5000:5000 --name paddleocr-api paddleocr-api:prod ``` 这个命令会在后台运行容器,并将容器的 5000 端口映射到主机的 5000 端口。 ### 验证部署 打开浏览器或使用 curl 命令访问 `http://localhost:5000` 来验证 API 是否正常运行。 注意:在实际的生产环境中,您可能需要考虑使用 HTTPS、负载均衡、监控等额外的配置来确保应用的安全性和可靠性。 ## 9. 常见问题解答 Q: 构建镜像时遇到网络问题怎么办? A: 尝试使用其他 PyPI 镜像源,或者增加 pip 的超时时间。 Q: 如何查看 Docker 容器的日志? A: 使用命令 `docker logs `。 Q: 如何停止正在运行的容器? A: 使用 `Ctrl+C` 或在另一个终端中运行 `docker stop `。 Q: 如何进入正在运行的容器? A: 使用命令 `docker exec -it /bin/bash`。 Q: 如何查看生产容器的日志? A: 使用命令 `docker logs ` 查看容器日志。 Q: 如何更新生产环境的代码? A: 更新代码后,需要重新构建镜像并重启容器。可以使用 Docker Compose 或 Kubernetes 等工具来简化这个过程。 希望这个教程能帮助您顺利搭建 PaddleOCR API 的本地开发环境和部署生产环境。如果还有任何问题,请随时询问!