{"id":16917791,"url":"https://github.com/sml2h3/ddddocr-fastapi","last_synced_at":"2025-05-14T19:04:19.048Z","repository":{"id":40335795,"uuid":"445206625","full_name":"sml2h3/ddddocr-fastapi","owner":"sml2h3","description":"使用ddddocr的最简api搭建项目，支持docker","archived":false,"fork":false,"pushed_at":"2024-11-13T02:31:09.000Z","size":144,"stargazers_count":953,"open_issues_count":35,"forks_count":429,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-13T13:18:41.946Z","etag":null,"topics":["captcha","ddddocr"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sml2h3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-06T14:53:23.000Z","updated_at":"2025-04-10T04:48:15.000Z","dependencies_parsed_at":"2024-07-25T03:29:11.393Z","dependency_job_id":"c55996a3-e174-493f-b0de-2c70061fdc45","html_url":"https://github.com/sml2h3/ddddocr-fastapi","commit_stats":{"total_commits":14,"total_committers":5,"mean_commits":2.8,"dds":0.4285714285714286,"last_synced_commit":"f9e3624eff1ed7c2a94811f3d95fe1846aec5b8e"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sml2h3%2Fddddocr-fastapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sml2h3%2Fddddocr-fastapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sml2h3%2Fddddocr-fastapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sml2h3%2Fddddocr-fastapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sml2h3","download_url":"https://codeload.github.com/sml2h3/ddddocr-fastapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248717239,"owners_count":21150390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["captcha","ddddocr"],"created_at":"2024-10-13T19:37:48.552Z","updated_at":"2025-04-13T13:18:45.844Z","avatar_url":"https://github.com/sml2h3.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 DdddOcr API\n\n![DdddOcr Logo](https://cdn.wenanzhe.com/img/logo.png!/crop/700x500a400a500)\n\n\u003e 基于 FastAPI 和 DdddOcr 的高性能 OCR API 服务，提供图像文字识别、滑动验证码匹配和目标检测功能。\n\u003e \n\u003e [自营各类GPT聚合平台](https://juxiangyun.com)\n\n## 📋 目录\n\n- [系统要求](#-系统要求)\n- [安装和启动](#-安装和启动)\n- [API 端点](#-api-端点)\n- [API 调用示例](#-api-调用示例)\n- [注意事项](#-注意事项)\n- [故障排除](#-故障排除)\n- [许可证](#-许可证)\n\n## 💻 系统要求\n\n| 组件 | 版本 |\n|------|------|\n| 操作系统 | Linux（推荐 Ubuntu 20.04 LTS 或更高版本）|\n| Docker | 20.10 或更高 |\n| Docker Compose | 1.29 或更高 |\n\n## 🚀 安装和启动\n\n1. **克隆仓库**\n   ```bash\n   git clone https://github.com/your-repo/ddddocr-api.git\n   cd ddddocr-api\n   ```\n\n2. **启动服务**\n   \n   有三种方式可以启动应用：\n\n   a. 使用 docker启动：\n      1. 构建 Docker 镜像 [一键docker环境服务器购买，可一元试用](https://www.rainyun.com/ddddocr_) \n      2. 打包镜像\n          ```bash\n          docker build -t ddddocr-api .\n          ```\n      3. 启动镜像\n         ```bash\n         docker run -d -p 8000:8000 --name ddddocr-api-container ddddocr-api\n         ```\n\n   b. 使用 python 命令直接运行：\n      ```bash\n      python app/main.py\n      ```\n   \n   b. 使用 uvicorn（支持热重载，适合开发）：\n      ```bash\n      uvicorn app.main:app --reload\n      ```\n\n\n3. **验证服务**\n   ```bash\n   curl http://localhost:8000/docs\n   ```\n   \u003e 如果成功，您将看到 Swagger UI 文档页面。\n   \n4. **停止服务**\n\n- 如果使用 Docker：\n  ```bash\n  docker stop ddddocr-api-container\n  ```\n\n- 如果使用 Docker Compose：\n  ```bash\n  docker-compose down\n  ```\n  \n5. **查看日志**\n\n- 如果使用 Docker：\n  ```bash\n  docker logs ddddocr-api-container\n  ```\n\n- 如果使用 Docker Compose：\n  ```bash\n  docker-compose logs\n  ```\n\n## 🔌 API 端点\n\n### 1. OCR 识别\n\n🔗 **端点**：`POST /ocr`\n\n| 参数 | 类型 | 描述 |\n|------|------|------|\n| `file` | File | 图片文件（可选） |\n| `image` | String | Base64 编码的图片字符串（可选） |\n| `probability` | Boolean | 是否返回概率（默认：false） |\n| `charsets` | String | 字符集（可选） |\n| `png_fix` | Boolean | 是否进行 PNG 修复（默认：false） |\n\n### 2. 滑动验证码匹配\n\n🔗 **端点**：`POST /slide_match`\n\n| 参数                                                                                        | 类型                                                                                         | 描述                                                                                         |\n|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|\n| `target_file`                                                                             | File                                                                                       | 目标图片文件（可选）需要与target字段同时使用                                                                  |\n| `target`                                                                                  | String                                                                                     | Base64 编码的目标图片字符串（可选） 需要与target_file字段同时使用                                                 |\n| `background_file`                                                                         | File                                                                                       | 背景图片文件（可选）    需要与background字段同时使用                                                          |\n| `background`                                                                              | String                                                                                     | Base64 编码的背景图片字符串（可选）  需要与background_file字段同时使用                                            |\n| `simple_target`                                                                           | Boolean                                                                                    | 是否使用简单目标（默认：false）                                                                         |\n|| |  `target_file`和`target` 为一组字段，`background_file`和`background` 为一组字段， 两组字段不可同时使用，同时使用则仅一组会生效 |\n\n\n### 3. 目标检测\n\n🔗 **端点**：`POST /detection`\n\n| 参数 | 类型 | 描述 |\n|------|------|------|\n| `file` | File | 图片文件（可选） |\n| `image` | String | Base64 编码的图片字符串（可选） |\n\n## 📘 API 调用示例\n\n\u003cdetails\u003e\n\u003csummary\u003ePython\u003c/summary\u003e\n\n```python\nimport requests\nimport base64\n\nurl = \"http://localhost:8000/ocr\"\nimage_path = \"path/to/your/image.jpg\"\n\nwith open(image_path, \"rb\") as image_file:\n    encoded_string = base64.b64encode(image_file.read()).decode('utf-8')\n\ndata = {\n    \"image\": encoded_string,\n    \"probability\": False,\n    \"png_fix\": False\n}\n\nresponse = requests.post(url, data=data)\nprint(response.json())\n```\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eNode.js\u003c/summary\u003e\n\n```javascript\nconst axios = require('axios');\nconst fs = require('fs');\n\nconst url = 'http://localhost:8000/ocr';\nconst imagePath = 'path/to/your/image.jpg';\n\nconst imageBuffer = fs.readFileSync(imagePath);\nconst base64Image = imageBuffer.toString('base64');\n\nconst data = {\n  image: base64Image,\n  probability: false,\n  png_fix: false\n};\n\naxios.post(url, data)\n  .then(response =\u003e {\n    console.log(response.data);\n  })\n  .catch(error =\u003e {\n    console.error('Error:', error);\n  });\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eC#\u003c/summary\u003e\n\n```csharp\nusing System;\nusing System.Net.Http;\nusing System.IO;\nusing System.Threading.Tasks;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        var url = \"http://localhost:8000/ocr\";\n        var imagePath = \"path/to/your/image.jpg\";\n\n        var imageBytes = File.ReadAllBytes(imagePath);\n        var base64Image = Convert.ToBase64String(imageBytes);\n\n        var client = new HttpClient();\n        var content = new MultipartFormDataContent();\n        content.Add(new StringContent(base64Image), \"image\");\n        content.Add(new StringContent(\"false\"), \"probability\");\n        content.Add(new StringContent(\"false\"), \"png_fix\");\n\n        var response = await client.PostAsync(url, content);\n        var result = await response.Content.ReadAsStringAsync();\n        Console.WriteLine(result);\n    }\n}\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ePHP\u003c/summary\u003e\n\n```php\n\u003c?php\n\n$url = 'http://localhost:8000/ocr';\n$imagePath = 'path/to/your/image.jpg';\n\n$imageData = base64_encode(file_get_contents($imagePath));\n\n$data = array(\n    'image' =\u003e $imageData,\n    'probability' =\u003e 'false',\n    'png_fix' =\u003e 'false'\n);\n\n$options = array(\n    'http' =\u003e array(\n        'header'  =\u003e \"Content-type: application/x-www-form-urlencoded\\r\\n\",\n        'method'  =\u003e 'POST',\n        'content' =\u003e http_build_query($data)\n    )\n);\n\n$context  = stream_context_create($options);\n$result = file_get_contents($url, false, $context);\n\necho $result;\n?\u003e\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eGo\u003c/summary\u003e\n\n```go\npackage main\n\nimport (\n    \"bytes\"\n    \"encoding/base64\"\n    \"encoding/json\"\n    \"fmt\"\n    \"io/ioutil\"\n    \"net/http\"\n    \"net/url\"\n)\n\nfunc main() {\n    apiURL := \"http://localhost:8000/ocr\"\n    imagePath := \"path/to/your/image.jpg\"\n\n    imageData, err := ioutil.ReadFile(imagePath)\n    if err != nil {\n        panic(err)\n    }\n\n    base64Image := base64.StdEncoding.EncodeToString(imageData)\n\n    data := url.Values{}\n    data.Set(\"image\", base64Image)\n    data.Set(\"probability\", \"false\")\n    data.Set(\"png_fix\", \"false\")\n\n    resp, err := http.PostForm(apiURL, data)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, err := ioutil.ReadAll(resp.Body)\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Println(string(body))\n}\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e易语言\u003c/summary\u003e\n\n```易语言\n.版本 2\n\n.程序集 调用OCR接口\n\n.子程序 主函数, 整数型\n.局部变量 请求头, QQ.HttpHeaders\n.局部变量 请求内容, QQ.HttpMultiData\n.局部变量 图片路径, 文本型\n.局部变量 图片数据, 字节集\n.局部变量 HTTP, QQ.Http\n\n图片路径 ＝ \"path/to/your/image.jpg\"\n图片数据 ＝ 读入文件 (图片路径)\n\n请求头.添加 (\"Content-Type\", \"application/x-www-form-urlencoded\")\n\n请求内容.添加文本 (\"image\", 到Base64 (图片数据))\n请求内容.添加文本 (\"probability\", \"false\")\n请求内容.添加文本 (\"png_fix\", \"false\")\n\nHTTP.发送POST请求 (\"http://localhost:8000/ocr\", 请求内容, 请求头)\n\n调试输出 (HTTP.获取返回文本())\n\n返回 (0)\n```\n\u003c/details\u003e\n\n\u003e **注意**：使用示例前，请确保安装了必要的依赖库，并根据实际环境修改服务器地址和图片路径。\n\n## ⚠️ 注意事项\n\n- 确保防火墙允许访问 8000 端口。\n- 生产环境建议配置 HTTPS 和适当的身份验证机制。\n- 定期更新 Docker 镜像以获取最新的安全补丁和功能更新。\n\n## 🔧 故障排除\n\n遇到问题？请检查以下几点：\n\n1. 确保 Docker 服务正在运行。\n2. 检查容器日志：\n   ```bash\n   docker logs ddddocr-api-container\n   ```\n3. 确保没有其他服务占用 8000 端口。\n\n\u003e 如果问题仍然存在，请提交 issue 到本项目的 GitHub 仓库。\n\n## 📄 许可证\n\n本项目采用 MIT 许可证。详情请参见 [LICENSE](LICENSE) 文件。\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by sml2h3\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsml2h3%2Fddddocr-fastapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsml2h3%2Fddddocr-fastapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsml2h3%2Fddddocr-fastapi/lists"}