我有一个应用程序,试图确定位图(签名)中是否有手写文字。不能仅在本地使用云解决方案来完成此操作(我在本地使用Google Vision来同时扫描QR码并通过OCR检测“文档结尾”,并且效果很好。)如果有人在位图中进行了手写签名,则需要检查位图。
我的解决方案如下(在我扫描QR码并进行了OCR,并获得了最终的位图之后):
public void createPaletteAsync(Bitmap bitmap) {
Palette.from(bitmap).maximumColorCount(40).generate(p -> {
// Use generated instance
List<Palette.Swatch> swatches = p.getSwatches();
for (Palette.Swatch swatch : swatches) {
float[] hslForCurrentSwatch = swatch.getHsl();
Log.i(TAG, "HSL value is: " + Float.toString(hslForCurrentSwatch[0])
+ "with a pixel population of: " + swatch.getPopulation());
if (Math.round(hslForCurrentSwatch[0]) >= 210 && Math.round(hslForCurrentSwatch[0]) <= 240) {
((TextView) findViewById(R.id.semnat)).setText("Signed document");
return;
}
}
((TextView) findViewById(R.id.semnat)).setText("Unsigned document");
});
}
因此,基本上,我检查位图中是否包含从210到240的蓝色色调的色板,如果存在,我将文档视为“已签名”。显然,这是有问题的,因为它仅适用于用蓝色笔签名的文档,并且它要求位图仅包含签名的纸张,照片中没有“蓝色对象”。
您能想象在本地(没有任何基于云的解决方案)可以确定文档是否签名的其他方法吗?