2012-11-08 95 views
0

我開始和Tess4J一起玩,看看它能做什麼。從我迄今爲止所做的測試中,如果我現在以圖像文件中的結構化水平方式鍵入文本,我可以選取文本。但是,如果我開始旋轉文本,我無法拿起Tess4J的文本。 Tess4J應該能夠處理垂直,45度等不同角度的文字嗎?Can Tess4J可以處理旋轉文字嗎?

回答

1

osdetect.cpp在Tesseract中有定位和腳本檢測的一些機制。這不會引入Tess4J,所以在這種情況下,最好與原始C++代碼進行交互。使用Tesseract,可以使用psm參數(請參閱this SO question以獲取完整的值列表)以進行「自動定向」。例如,psm -0應該提供自動定位。

-1

Tess4J除了是Tesseract之上的簡單包裝外,不提供任何其他功能。因此,您必須確定傾斜角度並在OCR之前旋轉圖像。

+0

因此,這意味着,如果一個文件有多個角度文本的測試文件夾的例子(比如,如果有人潦草手寫文檔邊緣的文本)tess4j不會處理它? – demongolem

+0

同樣,它取決於Tesseract引擎本身。 Tesseract能處理你的圖像嗎? – nguyenq

+1

Tess4J的最新發布包括幫助方法,可以確定傾斜角度和旋轉圖像。 – nguyenq

4

與Tess4j

歪斜消除看看源代碼Tess4j (Java JNA wrapper for Tesseract)

我最近張貼了這個答案(Java image library to deskew and crop images

您可以ImageHelper.rotate(BufferedImage image, double angle)結合ImageDeskew.getSkewAngle()

有關於如何使用它的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())); 
} 

eurotext_deskew.png

+0

請不要對多個問題添加相同的答案。回答最好的一個,並將其餘標記爲重複。 –

相關問題