3

我试图弄清楚在 tess4j 执行 OCR 之后如何在文本图像中获取坐标和单词 rect。我是初学者,所以有人可以帮我分解一下吗?非常感激。

4

2 回答 2

1

我本人对 tess4j 还很陌生,我不想不同意@nguyenq,但这就是我的做法

String imageUrl = "...";
File imageFile = new File(imageUrl);
Image image = ImageIO.read(imageFile);
BufferedImage bi = toBufferedImage(image);
ITesseract instance = new Tesseract();

for(Word word : instance.getWords(bi, ITessAPI.TessPageIteratorLevel.RIL_TEXTLINE)) {
  Rectangle rect = word.getBoundingBox();

  System.out.println(rect.getMinX()+","+rect.getMaxX()+","+rect.getMinY()+","+rect.getMaxY()
                    +": "+word.getText());
}

这是我的 toBufferedImage 方法

public static BufferedImage toBufferedImage(Image img)
{
  if (img instanceof BufferedImage)
  {
      return (BufferedImage) img;
  }

  // Create a buffered image with transparency
  BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);

  // Draw the image on to the buffered image
  Graphics2D bGr = bimage.createGraphics();
  bGr.drawImage(img, 0, 0, null);
  bGr.dispose();

  // Return the buffered image
  return bimage;
}

所以信用

编辑我应该注意到这是使用 tess4j v3.3.1。在发布初始问题后,@nguyenq 肯定已经添加了这个新的便利 API

于 2017-05-31T18:27:51.163 回答
0

Tess4J 的单元测试包括获取已识别词的边界框的示例。代码类似于Tess4J: How to use ResultIterator? .

于 2013-03-19T23:31:55.677 回答