Python 图像文本识别 EasyOCR

目录

1. 安装依赖

2. 下载模型文件

3. 编写代码

4. 运行脚本

命令行模式

参考文献


一个Python的图像文本识别工具:easyocr.

这个模块支持70多种语言的即用型OCR,包括中文,英文,日文,韩文和泰文等。

注:OCR = Optical Character Recognition 光学字符识别

1. 安装依赖

pip install easyocr

2. 下载模型文件

由于联网下载模型可能会很长时间或下载出错,可以下载预训练的模型文件到本地。

下载链接:

Release Model files · JaidedAI/EasyOCR · GitHubhttps://github.com/JaidedAI/EasyOCR/releases/tag/pre-v1.1.6

文件说明: 

模型文件识别文字
craft_mlt_25k.zip文字检测模型(CRAFT)(必须
chinese_sim.zip中文(简体)模型(识别中文必须
chinese.zip中文(繁体)模型
latin.zip拉丁文模型
japanese.zip日文模型
korean.zip韩文模型
thai.zip泰文模型
arabic.zip阿拉伯文模型

模型文件放置位置:

  • Windows:C:\Users\用户名\.EasyOCR\model

  • Linux:~/.EasyOCR/model

例如:Windows路径如下:(Snow-Angel为我的计算机用户名)

3. 编写代码

文件名为 easyocr_main.py

import easyocr
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext('image/nucleic-acid-20220419.jpg')
​
print(result)

项目目录结构:

4. 运行脚本

待检测的示例文件:

python easyocr_main.py

输出结果: 

CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU. [([[87, 89], [215, 89], [215, 149], [87, 149]], '姓名:', 0.9442024230957031), ([[888, 90], [990, 90], [990, 144], [888, 144]], '*辉', 0.3019644837089857), ([[89, 183], [309, 183], [309, 245], [89, 245]], '采样时间:', 0.9722564747406702), ([[522, 186], [992, 186], [992, 240], [522, 240]], '2022-04-2910:07.42', 0.5663659244856294), ([[89, 275], [309, 275], [309, 339], [89, 339]], '检测机构:', 0.928961890809416), ([[582, 272], [992, 272], [992, 336], [582, 336]], '亳州市华佗中医院', 0.9465525282106616), ([[89, 371], [305, 371], [305, 433], [89, 433]], '检测 时间:', 0.9039377327386754), ([[521, 373], [994, 373], [994, 427], [521, 427]], '2022-04-2916:31.06', 0.8148201099036173), ([[88, 465], [310, 465], [310, 525], [88, 525]], '检测项目:', 0.8194704755458363), ([[881, 463], [993, 463], [993, 523], [881, 523]], '核酸', 0.9890416189073347), ([[86, 558], [308, 558], [308, 618], [86, 618]], '检测结果:', 0.6191791236234889), ([[812, 550], [988, 550], [988, 622], [812, 622]], '[阴性]', 0.6905605792999268)]

命令行模式

easyocr.exe 一般被放置在 Python Scipts 目录下。

我的路径如是:D:\Program\Python\Python37\Scripts\easyocr.exe

D:\Program\Python\Python37\Scripts\easyocr -l ch_sim en -f image/nucleic-acid-20220419.jpg --detail=1 --gpu=False

输出结果:

([[87, 89], [215, 89], [215, 149], [87, 149]], '姓名:', 0.9442024230957031) ([[888, 90], [990, 90], [990, 144], [888, 144]], '*辉', 0.3019644837089857) ([[89, 183], [309, 183], [309, 245], [89, 245]], '采样时间:', 0.9722564747406702) ([[522, 186], [992, 186], [992, 240], [522, 240]], '2022-04-2910:07.42', 0.5663659244856294) ([[89, 275], [309, 275], [309, 339], [89, 339]], '检测机构:', 0.928961890809416) ([[582, 272], [992, 272], [992, 336], [582, 336]], '亳州市华佗中医院', 0.9465525282106616) ([[89, 371], [305, 371], [305, 433], [89, 433]], '检测时间:', 0.9039377327386754) ([[521, 373], [994, 373], [994, 427], [521, 427]], '2022-04-2916:31.06', 0.8148201099036173) ([[88, 465], [310, 465], [310, 525], [88, 525]], '检测项目:', 0.8194704755458363) ([[881, 463], [993, 463], [993, 523], [881, 523]], '核酸', 0.9890416189073347) ([[86, 558], [308, 558], [308, 618], [86, 618]], '检测结果:', 0.6191791236234889) ([[812, 550], [988, 550], [988, 622], [812, 622]], '[阴性]', 0.6905605792999268) 

命令行 easyocr 使用帮助:

easyocr [-h] -l LANG [LANG ...] [--gpu {True,False}]
        [--model_storage_directory MODEL_STORAGE_DIRECTORY]
        [--user_network_directory USER_NETWORK_DIRECTORY]
        [--recog_network RECOG_NETWORK]
        [--download_enabled {True,False}] [--detector {True,False}]
        [--recognizer {True,False}] [--verbose {True,False}]
        [--quantize {True,False}] -f FILE
        [--decoder {greedy,beamsearch,wordbeamsearch}]
        [--beamWidth BEAMWIDTH] [--batch_size BATCH_SIZE]
        [--workers WORKERS] [--allowlist ALLOWLIST]
        [--blocklist BLOCKLIST] [--detail {0,1}]
        [--rotation_info ROTATION_INFO] [--paragraph {True,False}]
        [--min_size MIN_SIZE] [--contrast_ths CONTRAST_THS]
        [--adjust_contrast ADJUST_CONTRAST]
        [--text_threshold TEXT_THRESHOLD] [--low_text LOW_TEXT]
        [--link_threshold LINK_THRESHOLD] [--canvas_size CANVAS_SIZE]
        [--mag_ratio MAG_RATIO] [--slope_ths SLOPE_THS]
        [--ycenter_ths YCENTER_THS] [--height_ths HEIGHT_THS]
        [--width_ths WIDTH_THS] [--y_ths Y_THS] [--x_ths X_THS]
        [--add_margin ADD_MARGIN]
​
Process EasyOCR.
​
optional arguments:
  -h, --help            show this help message and exit
  -l LANG [LANG ...], --lang LANG [LANG ...]
                        for languages
  --gpu {True,False}    Using GPU (default: True)
  --model_storage_directory MODEL_STORAGE_DIRECTORY
                        Directory for model (.pth) file
  --user_network_directory USER_NETWORK_DIRECTORY
                        Directory for custom network files
  --recog_network RECOG_NETWORK
                        Recognition networks
  --download_enabled {True,False}
                        Enable Download
  --detector {True,False}
                        Initialize text detector module
  --recognizer {True,False}
                        Initialize text recognizer module
  --verbose {True,False}
                        Print detail/warning
  --quantize {True,False}
                        Use dynamic quantization
  -f FILE, --file FILE  input file
  --decoder {greedy,beamsearch,wordbeamsearch}
                        decoder algorithm
  --beamWidth BEAMWIDTH
                        size of beam search
  --batch_size BATCH_SIZE
                        batch_size
  --workers WORKERS     number of processing cpu cores
  --allowlist ALLOWLIST
                        Force EasyOCR to recognize only subset of characters
  --blocklist BLOCKLIST
                        Block subset of character. This argument will be
                        ignored if allowlist is given.
  --detail {0,1}        simple output (default: 1)
  --rotation_info ROTATION_INFO
                        Allow EasyOCR to rotate each text box and return the
                        one with the best confident score. Eligible values are
                        90, 180 and 270. For example, try [90, 180 ,270] for
                        all possible text orientations.
  --paragraph {True,False}
                        Combine result into paragraph
  --min_size MIN_SIZE   Filter text box smaller than minimum value in pixel
  --contrast_ths CONTRAST_THS
                        Text box with contrast lower than this value will be
                        passed into model 2 times. First is with original
                        image and second with contrast adjusted to
                        'adjust_contrast' value. The one with more confident
                        level will be returned as a result.
  --adjust_contrast ADJUST_CONTRAST
                        target contrast level for low contrast text box
  --text_threshold TEXT_THRESHOLD
                        Text confidence threshold
  --low_text LOW_TEXT   Text low-bound score
  --link_threshold LINK_THRESHOLD
                        Link confidence threshold
  --canvas_size CANVAS_SIZE
                        Maximum image size. Image bigger than this value will
                        be resized down.
  --mag_ratio MAG_RATIO
                        Image magnification ratio
  --slope_ths SLOPE_THS
                        Maximum slope (delta y/delta x) to considered merging.
                        Low value means tiled boxes will not be merged.
  --ycenter_ths YCENTER_THS
                        Maximum shift in y direction. Boxes with different
                        level should not be merged.
  --height_ths HEIGHT_THS
                        Maximum different in box height. Boxes with very
                        different text size should not be merged.
  --width_ths WIDTH_THS
                        Maximum horizontal distance to merge boxes.
  --y_ths Y_THS         Maximum horizontal distance to merge boxes (when
                        paragraph = True).
  --x_ths X_THS         Maximum horizontal distance to merge boxes (when
                        paragraph = True).
  --add_margin ADD_MARGIN
                        Extend bounding boxes in all direction by certain
                        value. This is important for language with complex
                        script (E.g. Thai).

参考文献

Github地址:GitHub - JaidedAI/EasyOCR: Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.https://github.com/JaidedAI/EasyOCR Python3行代码翻译70种语言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值