我开始与 Tess4J 一起玩,看看它能做什么。从我到目前为止所做的测试中,如果我像现在这样在图像文件中以结构化的水平方式输入文本,我可以拾取文本。但是,如果我开始旋转文本,我无法使用 Tess4J 拾取文本。Tess4J 是否应该能够处理以不同角度(如垂直、45 度等)倾斜的文本?
问问题
3155 次
3 回答
4
使用 Tess4j 进行校正
查看源代码Tess4j(Tesseract 的 Java JNA 包装器)。
我最近发布了这个答案(Java 图像库去歪斜和裁剪图像)
答案:
您可以将ImageDeskew.getSkewAngle()与ImageHelper.rotate(BufferedImage image, double angle)结合使用。
在 tess4j 项目Tesseract1Test.java的 test 文件夹上有一个如何使用它的示例
public void testDoOCR_SkewedImage() throws Exception {
logger.info("doOCR on a skewed PNG image");
File imageFile = new File(this.testResourcesDataPath, "eurotext_deskew.png");
BufferedImage bi = ImageIO.read(imageFile);
ImageDeskew id = new ImageDeskew(bi);
double imageSkewAngle = id.getSkewAngle(); // determine skew angle
if ((imageSkewAngle > MINIMUM_DESKEW_THRESHOLD || imageSkewAngle < -(MINIMUM_DESKEW_THRESHOLD))) {
bi = ImageHelper.rotateImage(bi, -imageSkewAngle); // deskew image
}
String expResult = "The (quick) [brown] {fox} jumps!\nOver the $43,456.78 <lazy> #90 dog";
String result = instance.doOCR(bi);
logger.info(result);
assertEquals(expResult, result.substring(0, expResult.length()));
}
于 2016-03-27T13:51:42.257 回答
1
osdetect.cpp
在 Tesseract 中有一些用于方向和脚本检测的机制。Tess4J 没有带来这种情况,因此在这种情况下,最好与原始 c++ 代码进行交互。使用 Tesseract,可以使用 psm 参数(有关完整的值列表,请参阅此 SO 问题)来表示“自动定向”。例如,psm -0
应该提供自动定向。
于 2013-01-08T15:38:49.317 回答
-1
除了作为 Tesseract 之上的简单包装器之外,Tess4J 不提供任何额外的功能。因此,您必须在 OCR 之前确定倾斜角度并旋转图像。
于 2012-11-09T22:35:23.877 回答