跳转到主要内容

CRAFT文本检测器和Keras CRNN识别模型的打包和灵活版本。

项目描述

keras-ocr Documentation Status

这是对Keras CRNN实现和已发布的CRAFT文本检测模型的略微抛光和打包版本。它提供了一个高级API来训练文本检测和OCR流程。

有关更多示例(包括训练自定义模型),请参阅文档

入门

安装

keras-ocr 支持 Python >= 3.6 和 TensorFlow >= 2.0.0。

# To install from master
pip install git+https://github.com/faustomorales/keras-ocr.git#egg=keras-ocr

# To install from PyPi
pip install keras-ocr

使用

该软件包包含一个易于使用的来自此存储库的CRAFT文本检测模型实现和来自此存储库的CRNN识别模型。

import matplotlib.pyplot as plt

import keras_ocr

# keras-ocr will automatically download pretrained
# weights for the detector and recognizer.
pipeline = keras_ocr.pipeline.Pipeline()

# Get a set of three example images
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'
    ]
]

# Each list of predictions in prediction_groups is a list of
# (word, box) tuples.
prediction_groups = pipeline.recognize(images)

# Plot the predictions
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)

example of labeled image

比较keras-ocr和其他OCR方法

您可能想知道这个包中的模型与现有的云OCR API相比如何。我们提供了以下指标和用于计算这些指标的工作表,它使用了COCO-Text验证集中的前1000张图片。我们将其限制为1000,因为撰写本文时Google Cloud免费层每月只能调用1000次。一如既往,存在一些限制。

  • 以下数字不提供任何保证,请务必注意并独立计算自己的指标以验证它们。截至本文撰写时,它们应被视为一个非常粗略的初稿。如果发现错误,请提交问题。特别是,云API提供了各种选项,可以用来提高其性能,响应可以以不同的方式解析。我可能在配置或解析中犯了错误。再次提醒,如果发现错误,请提交问题!
  • 我们忽略标点和字母大小写,因为keras-ocr(由此独立仓库提供)的默认识别器不支持这两者。请注意,AWS Rekognition和Google Cloud Vision都支持标点和大小写字母。
  • 我们忽略非英文文本。
  • 我们忽略难以辨认的文本。
模型 延迟 精确度 召回率
AWS 719ms 0.45 0.48
GCP 388ms 0.53 0.58
keras-ocr(缩放=2) 417ms 0.53 0.54
keras-ocr(缩放=3) 699ms 0.5 0.59
  • 精确度和召回率是基于50%或更高的交集和50%或更高的与真实文本相似度计算的。
  • keras-ocr延迟值是在Google Colab上使用Tesla P4 GPU计算的。缩放指的是传递给keras_ocr.pipelines.Pipeline()的参数,它决定了在推理之前对图像应用的上采样。
  • 云提供商的延迟是通过连续请求测量的,因此您可以通过同时进行多个API请求来获得显著的性能提升。
  • 每个条目都提供了一个链接,指向包含每个遍历所作注释的JSON文件。您可以使用这个笔记本来计算指标,而无需自己调用API(尽管鼓励您独立进行复制)!

为什么不用Tesseract进行比较?在我尝试的每种配置中,Tesseract在这个测试中都表现得非常糟糕。Tesseract在书籍扫描方面表现最佳,而不是在像这个数据集中那样的偶然场景文本。

高级配置

默认情况下,如果可用GPU,Tensorflow会尝试占用几乎所有可用视频内存,如果你同时在运行多个模型,那么这会很糟糕。设置环境变量MEMORY_GROWTH的任何值都将强制Tensorflow动态分配所需的GPU内存量。

您也可以通过将环境变量MEMORY_ALLOCATED设置为任何浮点数来为Tensorflow进程指定一个限制,这个值是VRAM与总内存量之间的浮点比。

要应用这些更改,请在导入keras_ocr的文件顶部调用keras_ocr.config.configure()

贡献

要参与该项目,请先执行以下操作。这些说明可能还不适用于Windows,但如果Windows用户有一些解决问题的想法,将非常感谢(目前我没有Windows机器进行测试)。

# Install local dependencies for
# code completion, etc.
make init

# Build the Docker container to run
# tests and such.
make build
  • 您可以使用make lab启动JupyterLab服务器进行实验。
  • 在提交代码之前运行检查,可以使用make format-check type-check lint-check test
  • 要查看文档,请使用make docs

要实现新功能,请首先提交问题,提出您想讨论的更改。

要报告问题,请提交问题,包括示例代码、预期结果、实际结果和完整的回溯。

故障排除

  • 本包正在安装 opencv-python-headless,但我希望安装不同版本的 opencv 这是因为 aleju/imgaug#473。安装 keras-ocr 后,您可以卸载不需要的 OpenCV 版本。我们对给您带来的不便表示歉意。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅 生成分发存档 的教程。

构建分发

keras_ocr-0.9.3-py3-none-any.whl (42.3 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面