java - 苔丝4J : How to use ResultIterator?

标签 java ocr tesseract

我正在将 OCR 应用程序从 c++ 转换为 java。使用 Tess4J 我想获取每个单词的边界框。然而,显然 TessResultIterator 没有提供任何方法。所以我想知道是否有可能以某种方式获取这些数据?

这是我当前的代码:

TessBaseAPI api = TessAPI1.TessBaseAPICreate();
TessAPI1.TessBaseAPIInit3(api, path, lang);
TessAPI1.TessBaseAPISetPageSegMode(api, TessAPI1.TessPageSegMode.PSM_AUTO);
TessAPI1.TessBaseAPISetImage(api, img, w, h, bpp, bpp*w);
TessAPI1.TessBaseAPIGetUTF8Text(api);
TessResultIterator it = TessAPI1.TessBaseAPIGetIterator(api); 

在 C++ 中我可以继续这样:

char* text = it->GetUTF8Text(tesseract::RIL_WORD); 
int left, top, right, bttm;
it->BoundingBox(tesseract::RIL_WORD, &left, &top, &right, &bttm); 

最佳答案

你能尝试下面的代码片段吗?我没有真正彻底地测试它。

TessResultIterator ri = TessAPI1.TessBaseAPIGetIterator(api);
TessPageIterator pi = TessAPI1.TessResultIteratorGetPageIterator(ri);
String str = TessAPI1.TessResultIteratorGetUTF8Text(ri, TessPageIteratorLevel.RIL_WORD);
IntBuffer leftB = IntBuffer.allocate(1);
IntBuffer topB = IntBuffer.allocate(1);
IntBuffer rightB = IntBuffer.allocate(1);
IntBuffer bottomB = IntBuffer.allocate(1);
TessAPI1.TessPageIteratorBoundingBox(pi, TessPageIteratorLevel.RIL_WORD, leftB, topB, rightB, bottomB);
int left = leftB.get();
int top = topB.get();
int right = rightB.get();
int bottom = bottomB.get();

关于java - 苔丝4J : How to use ResultIterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14794551/

相关文章:

java - 尝试通过 ant 脚本运行 Java 服务器时无法分配请求的地址

java - Spring Boot init.d not 未运行(未找到进程)

python - 如何删除 "Tesseract Open Source OCR Engine v3.02 with Leptonica"消息

python - 使tesseract仅识别数字

ios - 检测到相同的图像?

java - 在收据上使用 Tesseract 时如何获得更好的效果?

c++ - 加载 libtesseract302d.dll 时崩溃?

java - 局部变量可能尚未初始化

ocr - Tesseract 使用 mftraining 断言训练样本集.cpp 第 622 行失败

java - GWT:Tomcat 无法序列化 'javax.net.ssl.SSLException'