CRAFT文本检测器和Keras CRNN识别模型的打包和灵活版本。
项目描述
keras-ocr 
这是对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)
比较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 版本。我们对给您带来的不便表示歉意。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
keras_ocr-0.9.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8fdbb9044a814910e86d3853f5e7f13085c98ac210f27204fe75f4f8c4ac6262 |
|
MD5 | 9f8b83c9c2154b8e1c9c77a416a8d338 |
|
BLAKE2b-256 | aff37ad1edb975c6c485d73146438dfff188f1c22b798d3a076e4f644e7bdce1 |