从我到目前为止所做的测试来看,如果我像现在这样在图像文件中以结构化的水平方式键入文本,我就可以拾取文本。但是,如果我开始旋转文本,我就不能用Tess4J拾取文本。Tess4J应该能够处理垂直、45度等不同角度的文本吗?
发布于 2013-01-08 23:38:49
osdetect.cpp在Tesseract中有一些定向和脚本检测机制。这不会被带到Tess4J中,所以在这种情况下,最好与原始c++代码交互。在Tesseract中,可以使用psm参数(有关值的完整列表,请参阅this SO question )来实现“自动定向”。例如,psm -0应该提供自动定向。
发布于 2016-03-27 21:51:42
使用Tess4j进行去偏斜
请看一下源代码Tess4j (Java JNA wrapper for Tesseract)。
我最近发布了这个答案(Java image library to deskew and crop images)
回答
您可以将ImageDeskew.getSkewAngle()与ImageHelper.rotate(BufferedImage image, double angle)结合使用。
这里有一个关于如何在tess4j项目Tesseract1Test.java的测试文件夹中使用它的示例
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()));
}

发布于 2012-11-10 06:35:24
除了作为Tesseract之上的简单包装器之外,Tess4J没有提供任何额外的功能。因此,您必须确定倾斜角度并在OCR之前旋转图像。
https://stackoverflow.com/questions/13298742
复制相似问题