Java OCR库:在Windows 64位上编译tesseract
我正在使用ImageJ处理文档图像(业务文档),我正在寻找一个好的OCR库来检索某些区域的文本 目前我正在使用Asprise,但是结果不是很可靠。某些字符经常会混淆(0变成O,8->B,%->0,…),然后在不应该出现的地方出现空白,因此在后处理这些数据时会遇到很多麻烦。图像的分辨率为1240x1754,我还没有尝试过更高的分辨率,但是我想检测的最小字符是15像素高,所以我假设图像的质量足够了。(顺便说一下,我正在对原始图像执行ocr,而不是二进制图像) 看看这里类似的问题,我注意到tesseract经常被推荐。因为它是用C++编写的,我不知道如何在java和Image J中使用它。p>Java OCR库:在Windows 64位上编译tesseract,java,dll,dependencies,32bit-64bit,ocr,Java,Dll,Dependencies,32bit 64bit,Ocr,我正在使用ImageJ处理文档图像(业务文档),我正在寻找一个好的OCR库来检索某些区域的文本 目前我正在使用Asprise,但是结果不是很可靠。某些字符经常会混淆(0变成O,8->B,%->0,…),然后在不应该出现的地方出现空白,因此在后处理这些数据时会遇到很多麻烦。图像的分辨率为1240x1754,我还没有尝试过更高的分辨率,但是我想检测的最小字符是15像素高,所以我假设图像的质量足够了。(顺便说一下,我正在对原始图像执行ocr,而不是二进制图像) 看看这里类似的问题,我注意到tesser
使用ASPRISE,我知道,它也用C++编写,只提供java包装器,我可以根据缓冲区执行OCR。所以我想我可以用tesseract做同样的事情
1。如何从Java调用tesseract函数? 更新:我试图使用tesjeract,但当我执行应用程序时,它因错误而崩溃 未满足链接错误:C:\Windows\System32\tessdll.dll:找不到依赖库 我能够成功编译tesjeract和tesseract 2.04,并将tessdll.dll和tesjeract.dll放在c:\windows\system32中。我正在使用此静态块加载库:static
{
System.loadLibrary("tessdll");
System.loadLibrary("tesjeract");
}
如果相关,我使用的是64位Windows 7
2。那么,如何将BuffereImage转换为TeserAct能够使用的格式? 已解决 这是代码,如果有人感兴趣:(来源)
您可以查看一个Java OMR包,我相信它使用Tesseract作为工作表的文本部分。您可能需要查看Tesseract 2.04的两个Java包装器:以及。外部库的位需要与JVM匹配。由于tesjeract是最低公分母,因此您需要使用32位JVM。谢谢!我在那里找到了一种将图像转换为tesseract的方法。
private ByteBuffer imageToTiffBuffer (BufferedImage image) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
// Take the first suitable TIFF writer
ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();
writer.setOutput(ios);
writer.write(image);
ios.close();
// allocate() doesn't work
ByteBuffer buf = ByteBuffer.allocateDirect(baos.size());
buf.put(baos.toByteArray());
return buf;
}