EasyOCR 内置两套主要的API:
-
ImageClean
:验证码图片清理类,完成各种验证码图片的清理工作并输出。支持图片清理(内置几种预定义的图片清理模式可以灵活切换选择)、形变和旋转三种场景,并支持场景的同时应用。 -
EasyOCR
:识别图片文字的OCR核心类,完成对OCR引擎的调用。内部可借助ImageClean
完成自动清理,识别的一体化工作。
ImageClean主要是为了完成验证码的清理工作,支持图片清理、形变和旋转三种场景。图片清理选项内置多种清理方法,通过ImageType枚举可选择预定义的图片清理模式。
-
NONE
: 在识别时,不对图片做任何清理 -
由于验证码图片种类繁多,而且具体场景要具体处理,并无完全通用的方案。EasyOCR内置的清理类型仅针对有限情况,面对具体场景还需通过有针对性处理,如通过其他方式对图片进行预处理,或对ORC引擎进行特别训练实现。
-
EasyOCR支持自定义图片清理插件,能够基于EasyOCR完成一体化识别的验证码图片清理识别。 EasyOCR 图片清理插件编写
-
构造方法:
/** * 构造图片清理对象 * * @param imageType 验证码图片类型,默认为 ImageType.CAPTCHA_NORMAL * @param imageWidthRatio 图片宽度形变比例,默认为 1 * @param imageHeightRatio 图片宽度形变比例,默认为 1 * @param degrees 图片顺时针旋转角度,默认为 0 */ ImageClean([Type imageType] [, double imageWidthRatio] [, double imageHeightRatio] [, int degrees]);
-
核心方法:
- 图片清理
/**
* 图片清理
*
* @param from 需要清理的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param to 清理后的图片,支持String字符串路径、File文件对象等多种重载。
* @param imageWidthRatio 直接指定图片宽度度放大比例,某些图片形变后识别率可以提高,默认为 1
* @param imageHeightRatio 直接指定图片高度放大比例,某些图片形变后识别率可以提高,默认为 1
* @param degrees 直接指定图片顺时针旋转角度,默认为 0
* @return 处理结果
*/
public boolean cleanImage(from, to [, imageWidthRatio] [, imageHeightRatio] [, degrees]);
- 其他方法:
以下方法可以直接设置ImageClean实例的默认属性值,在进行清理操作时,无需每次直接传入参数。
- 默认图片清理类型
void setImageType(Type imageType)
- 图片宽度和高度形变比例,某些图片形变后识别率可以提高,1为原始比例,不形变
void setImageRatio(double imageWidthRatio, double imageHeightRatio)
- 图片宽度形变比例,1为原始比例
void setImageWidthRatio(double imageWidthRatio)
- 图片高度形变比例,1为原始比例
void setImageHeightRatio(double imageHeightRatio)
- 图片顺时针旋转角度,0为默认值,不旋转
void setDegrees(int degrees)
识别图片文字的OCR核心类,完成对OCR引擎的调用。内部可借助ImageClean
完成自动清理、形变、旋转和识别的一体化工作。
- EasyOCR 提供两种类型的识别方法,并对识别结果提供直接返回字符串,保存到文件,保存到文件并返回字符串三种方式处理结果。 直接识别:discern、discernToFile、discernToFileAndGet 清理并识别:discernAndAutoCleanImage、discernToFileAndAutoCleanImage、discernToFileAndGetAndAutoCleanImage
-
构造方法:
/** * 构造图片清理对象 * * @param tesseractPath tesseract执行命令的位置,如果配置了path环境变量,则可以不用设置 * @param tesseractOptions tesseract命令执行参数 */ EasyOCR([String tesseractPath] [, String tesseractOptions]);
- tesseractOptions 中英文语言可选常量: Tesseract-OCR 默认可直接识别英文。tesseractOptions属性可以指定tesseract命令行参数,用来控制识别的语言(需要提前安装好语言包),细节参数等。 EasyOCR内置了中文和英文基本参数常量可供选择。
/**
* 英文识别命令执行参数
*/
public static final String OPTION_LANG_ENG = "-l eng";
/**
* 中文识别命令执行参数
*/
public static final String OPTION_LANG_CHI_SIM = "-l chi_sim";
- 核心方法: EasyOCR 提供两种类型的识别方法,并对识别结果提供直接返回字符串,保存到文件,保存到文件并返回字符串三种方式处理结果。
- 直接识别图片
/**
* 识别图片内容,并返回读取到的内容字符串
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @return 读取到的代码
*/
public String discern(fromImage)
/**
* 将识别的图片上的内容输出到指定文件。不指定toFile参数时,输出到默认输出到 System.getProperty("java.io.tmpdir") 目录,默认输出文件名为:图片名.txt
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param toFile 保存内容的文件,默认会自动添加.txt后缀
* @return 生成是否完成
*/
public boolean discernToFile(fromImage [, String toFile])
/**
* 将识别的图片上的内容输出到指定文件,并返回读取到的内容字符串。不指定toFile参数时,输出到默认输出到 System.getProperty("java.io.tmpdir") 目录,默认输出文件名为:图片名.txt
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param toFile 同时保存进的的文件,默认会自动添加.txt后缀
* @return 读取到的代码
*/
public String discernToFileAndGet(fromImage [, String toFile])
- 清理并识别图片
/**
* 按图片类型、形变比例、顺时针旋转角度等场景,清理识别图片内容,并返回读取到的内容字符串
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param imageType 图片类型枚举,默认为ImageType.NONE
* @param autoCleanImageWidthRatio 直接指定图片宽度度放大比例,某些图片形变后识别率可以提高
* @param autoCleanImageHeightRatio 直接指定图片高度放大比例,某些图片形变后识别率可以提高
* @param autoCleanDegrees 图片自动清理时的顺时针旋转角度
* @return 识别内容
*/
public String discernAndAutoCleanImage(fromImage [, Type imageType] [, double autoCleanImageWidthRatio] [, double autoCleanImageHeightRatio] [, int autoCleanDegrees])
/**
* 按图片类型、形变比例、顺时针旋转角度等场景,清理识别图片内容,输出到指定文件,输出文件无需后缀名.txt
* 不指定toFile参数时,输出到默认输出到 System.getProperty("java.io.tmpdir") 目录,默认输出文件名为:图片名.txt
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param toFile 保存内容的文件,默认会自动添加.txt后缀
* @param imageType 图片类型, ImageType.NONE
* @param autoCleanImageWidthRatio 直接指定图片宽度度放大比例,某些图片形变后识别率可以提高
* @param autoCleanImageHeightRatio 直接指定图片高度放大比例,某些图片形变后识别率可以提高
* @param autoCleanDegrees 图片自动清理时的顺时针旋转角度
* @return 生成是否完成
*/
public boolean discernToFileAndAutoCleanImage(fromImage [,String toFile] [, Type imageType] [, double autoCleanImageWidthRatio] [, double autoCleanImageHeightRatio] [,int autoCleanDegrees])
/**
* 按图片类型、形变比例、顺时针旋转角度等场景,清理识别图片内容,输出到指定文件,并返回读取到的内容字符串,输出文件无需后缀名.txt
* 不指定toFile参数时,输出到默认输出到 System.getProperty("java.io.tmpdir") 目录,默认输出文件名为:图片名.txt
*
* @param fromImage 要识别的图片,支持File字符串路径;http://、ftp://开头的URL字符串;File文件对象;InputStream输入流等多种来源重载
* @param toFile 同时保存内容的的文件,默认会自动添加.txt后缀
* @param imageType 图片类型
* @param autoCleanImageWidthRatio 直接指定图片宽度度放大比例,某些图片形变后识别率可以提高
* @param autoCleanImageHeightRatio 直接指定图片高度放大比例,某些图片形变后识别率可以提高
* @param autoCleanDegrees 图片自动清理时的顺时针旋转角度
* @return 读取到的代码
*/
public String discernToFileAndGetAndAutoCleanImage(fromImage [, String toFile] [, Type imageType] [, double autoCleanImageWidthRatio] [, double autoCleanImageHeightRatio] [,int autoCleanDegrees])
- 其他方法:
以下方法可以直接设置EasyOCR实例的默认属性值,在进行识别操作时,调用清理并识别图片方法时,无需每次直接传入参数。
- tesseract执行命令的位置,如果配置了path环境变量,则可以不用设置
void setTesseractPath(String tesseractPath)
- tesseract命令执行参数,用来调整运行参数。可从TesseractOCR.OPTION_LANG_...常量选择基本语言
void setTesseractOptions(String tesseractOptions)
- 设置图片清理类型
void setAutoCleanImageType(Type autoCleanImageType)
- 图片宽度和高度形变比例,某些图片形变后识别率可以提高,1为原始比例,不形变
void setAutoCleanImageRatio(double autoCleanImageWidthRatio, double autoCleanImageHeightRatio)
- 图片宽度形变比例,1为原始比例
void setAutoCleanImageWidthRatio(double autoCleanImageWidthRatio)
- 图片宽度形变比例,1为原始比例
void setAutoCleanImageHeightRatio(double autoCleanImageHeightRatio)
- 图片顺时针旋转角度,0为默认值,不旋转
void setDegrees(int autoCleanDegrees)
如果您有更好意见,建议或想法,请联系我。
联系、反馈、定制、培训 Email:[email protected]