keras-ocr
keras-ocr 是一个基于 Keras 和 TensorFlow 构建的开源光学字符识别(OCR)工具包,旨在为开发者提供一套开箱即用的文本检测与识别解决方案。它巧妙地将业界知名的 CRAFT 文本检测模型与 CRNN 识别模型进行整合与封装,解决了传统 OCR 方案配置复杂、依赖繁琐以及难以快速上手训练的痛点。
通过提供简洁的高级 API,keras-ocr 让用户仅需几行代码即可加载预训练权重,轻松完成从图片输入到文字坐标及内容输出的全流程。它不仅支持直接调用默认模型处理常见场景,还开放了完整的训练接口,允许用户根据自身数据定制专属模型,灵活适应各种垂直领域的需求。
这款工具特别适合 Python 开发者、人工智能研究人员以及需要集成 OCR 功能的工程师使用。对于希望深入理解 OCR 原理或在不依赖昂贵云服务的前提下构建本地化识别应用的技术人员而言,keras-ocr 是一个高效且透明的选择。虽然其在标点符号和多语言支持上相比大型商业云 API 尚有局限,但其开源免费、可完全掌控模型细节的特性,使其成为学术研究和轻量级工程落地的理想基石。
使用场景
某电商初创公司的数据团队需要每天从数千张供应商上传的手写或打印发货单图片中,自动提取商品名称和数量以录入库存系统。
没有 keras-ocr 时
- 开发人员必须分别寻找并整合独立的文本检测(如 CRAFT)和识别(如 CRNN)开源代码,环境配置复杂且依赖冲突频发。
- 面对不同光照、倾斜角度或模糊的单据图片,现有简易 OCR 方案漏检率极高,导致大量数据需要人工二次核对。
- 缺乏统一的高层 API,每次新增一种单据格式都需要重写大量的图像预处理和后处理逻辑,开发效率低下。
- 若转向商业云 OCR 服务,高昂的按次调用费用将严重压缩初创公司的利润空间,且存在数据隐私外泄风险。
使用 keras-ocr 后
- 通过
pip install keras-ocr一键安装即可获取封装好的检测与识别流水线,无需手动拼凑模型,大幅降低部署门槛。 - 利用其内置的预训练权重,keras-ocr 能精准定位并识别复杂背景下的倾斜或模糊文字,显著减少人工复核工作量。
- 仅需几行代码调用
pipeline.recognize()即可返回带有坐标框的文字结果,开发者可专注于业务逻辑而非底层算法调试。 - 完全本地化运行消除了云端调用的延迟和网络依赖,在保护敏感商业数据的同时,将单次处理成本降为零。
keras-ocr 通过提供开箱即用的高精度 OCR 流水线,帮助团队以零成本实现了高效、私密的文档自动化录入。
运行环境要求
- Linux
- macOS
- 非必需(支持 CPU),若有 GPU 则 TensorFlow 会自动使用
- 测试环境为 Tesla P4
- 可通过环境变量配置显存增长或限制
未说明

快速开始
keras-ocr 
这是对Keras CRNN实现和已发布的CRAFT文本检测模型进行了一定程度的优化和封装后的版本。它提供了一个高层次的API,用于训练文本检测和OCR流水线。
更多示例,包括如何训练自定义模型,请参阅文档。
快速入门
安装
keras-ocr支持Python >= 3.6和TensorFlow >= 2.0.0。
# 从master分支安装
pip install git+https://github.com/faustomorales/keras-ocr.git#egg=keras-ocr
# 从PyPi安装
pip install keras-ocr
使用
该包自带一个易于使用的CRAFT文本检测模型实现(来自这个仓库)以及CRNN识别模型实现(来自这个仓库)。
import matplotlib.pyplot as plt
import keras_ocr
# keras-ocr会自动下载检测器和识别器的预训练权重。
pipeline = keras_ocr.pipeline.Pipeline()
# 获取三张示例图片
images = [
keras_ocr.tools.read(url) for url in [
'https://upload.wikimedia.org/wikipedia/commons/b/bd/Army_Reserves_Recruitment_Banner_MOD_45156284.jpg',
'https://upload.wikimedia.org/wikipedia/commons/e/e8/FseeG2QeLXo.jpg',
'https://upload.wikimedia.org/wikipedia/commons/b/b4/EUBanana-500x112.jpg'
]
]
# prediction_groups中的每个预测列表都是由(word, box)元组组成的。
prediction_groups = pipeline.recognize(images)
# 绘制预测结果
fig, axs = plt.subplots(nrows=len(images), figsize=(20, 20))
for ax, image, predictions in zip(axs, images, prediction_groups):
keras_ocr.tools.drawAnnotations(image=image, predictions=predictions, ax=ax)

对比keras-ocr与其他OCR方法
你可能会好奇,本包中的模型与现有的云端OCR API相比如何。我们在此提供一些指标,并附上用于计算这些指标的笔记本,该笔记本使用了COCO-Text验证集中的前1,000张图片。之所以限制在1,000张,是因为截至撰写本文时,Google Cloud的免费层级每月仅允许1,000次调用。当然,以下几点需要注意:
- 这些数据仅供参考,请务必自行独立计算并验证相关指标。目前这些数据仍属于非常粗略的初稿,如有错误,请随时提交issue。尤其是,云端API提供了多种可调节的参数来优化性能,且响应结果的解析方式也可能不同。我可能在配置或解析过程中出现了某些疏漏。再次提醒,如有发现错误,请及时提出issue!
- 我们忽略了标点符号和大小写,因为keras-ocr中默认提供的识别器(来自这个独立仓库)并不支持这两项功能。值得注意的是,AWS Rekognition和Google Cloud Vision都支持标点符号以及大小写字母。
- 我们未考虑非英语文本。
- 我们忽略了难以辨认的文本。
| 模型 | 延迟 | 精确率 | 召回率 |
|---|---|---|---|
| AWS | 719ms | 0.45 | 0.48 |
| GCP | 388ms | 0.53 | 0.58 |
| keras-ocr (scale=2) | 417ms | 0.53 | 0.54 |
| keras-ocr (scale=3) | 699ms | 0.5 | 0.59 |
- 精确率和召回率是基于交并比不低于50%以及文本与真实标签的相似度不低于50%来计算的。
keras-ocr的延迟值是在Google Colab上的Tesla P4 GPU上测得的。scale是指传递给keras_ocr.pipelines.Pipeline()的参数,用于决定推理前对图像进行的放大比例。- 云端服务提供商的延迟是通过顺序请求测量的,因此如果你同时发起多个API请求,可以获得显著的速度提升。
- 每个条目都提供了包含每次运行注释的JSON文件链接。你可以使用该笔记本自行计算指标,而无需亲自调用API(尽管我们鼓励你独立复现)!
为什么没有与Tesseract比较? 在我尝试过的所有配置中,Tesseract在这项测试中的表现都非常差。Tesseract最适合处理书籍扫描件,而不是像本数据集中这样的场景文本。
高级配置
默认情况下,如果GPU可用,TensorFlow会尝试占用几乎所有显存,这在同时运行多个TensorFlow和PyTorch模型时可能会导致问题。通过设置环境变量MEMORY_GROWTH为任意值,可以强制TensorFlow仅动态分配所需的GPU内存。
你还可以通过设置环境变量MEMORY_ALLOCATED来限制每个TensorFlow进程的显存用量,该变量的值是一个浮点数,表示分配的显存占总显存的比例。
要应用这些更改,请在导入keras_ocr的文件顶部调用keras_ocr.config.configure()。
贡献
要参与项目开发,请先执行以下步骤。这些说明目前可能还不适用于Windows系统,但如果Windows用户有改进方案,我们将不胜感激(我目前没有Windows机器可供测试)。
# 安装本地依赖以支持代码补全等功能。
make init
# 构建Docker容器以运行
# 测试等。
make build
- 你可以启动一个 JupyterLab 服务器来尝试使用
make lab。 - 在提交代码之前,可以运行检查,使用
make format-check type-check lint-check test。 - 要查看文档,可以使用
make docs。
若要实现新功能,请先提交一个问题,提出你的更改建议以供讨论。
如需报告问题,请提交一个问题,并附上示例代码、预期结果、实际结果以及完整的错误回溯信息。
故障排除
- 此包正在安装
opencv-python-headless,但我更希望使用其他版本的 OpenCV。 这是由于 aleju/imgaug#473 引起的。你可以在安装keras-ocr后卸载不需要的 OpenCV 版本。对于由此带来的不便,我们深表歉意。
版本历史
v0.8.42020/09/13常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
opencv
OpenCV 是一个功能强大的开源计算机视觉库,被誉为机器视觉领域的“瑞士军刀”。它主要解决让计算机“看懂”图像和视频的核心难题,提供了从基础的图像读取、色彩转换、边缘检测,到复杂的人脸识别、物体追踪、3D 重建及深度学习模型部署等全方位算法支持。无论是处理静态图片还是分析实时视频流,OpenCV 都能高效完成特征提取与模式识别任务。 这款工具特别适合计算机视觉开发者、人工智能研究人员以及机器人工程师使用。对于希望将视觉感知能力集成到应用中的软件工程师,或是需要快速验证算法原型的学术研究者,OpenCV 都是不可或缺的基础设施。虽然普通用户通常不会直接操作代码,但日常生活中使用的扫码支付、美颜相机和自动驾驶系统,背后往往都有它的身影。 OpenCV 的独特亮点在于其卓越的性能与广泛的兼容性。它采用 C++ 编写以确保高速运算,同时提供 Python、Java 等多种语言接口,极大降低了开发门槛。库中内置了数千种优化算法,并支持跨平台运行,能够无缝对接各类硬件加速器。作为社区驱动的项目,OpenCV 拥有活跃的生态系统和丰富的学习资源,持续推动着视觉技术的前沿发展。