我正在使用Tess4J从PDF OCR中提取文本。效果很好(需要很多时间),但是它不会检测到列,也不会打印出两列中的行。 尽管如果我使用“转换”将PDF转换为tiff,然后在命令行上的tif文件上直接运行terrasect,它会根据该列生成文本。 知道如何使用JAva在Tess4J或javacpp中使其工作
以下是我的Tess4J代码
public static void main(String[] args)
{
org.apache.log4j.PropertyConfigurator.configure("C://Projects//Library//Tess4J//log4j.properties.txt"); // sets
// properties
// file
// for
// log4j
File image = new File("C://Users//arpit.tandon//Documents//My Received Files//SomePapers//Arlen Effect Abstract.pdf");
// recognizeTextBlocks(image.toPath());
Tesseract tessInst = new Tesseract();
tessInst.setDatapath("C://Projects//Library//Tess4J");
try
{
String result = tessInst.doOCR(image);
System.out.println(result);
}
catch (TesseractException e)
{
System.err.println(e.getMessage());
}
}
在我的javacpp代码后面加上ID
public static void main(String[] args)
{
BytePointer outText;
TessBaseAPI api = new TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api.Init("C:\\Projects\\Library\\Tess4J\\tessdata", "eng") != 0)
{
System.err.println("Could not initialize tesseract.");
System.exit(1);
}
// Open input image with leptonica library
PIX image = pixRead(args.length > 0 ? args[0] : "C://Users//arpit.tandon//Documents//My Received Files//SomePapers//out.tiff");
api.SetImage(image);
// Get OCR result
outText = api.GetUTF8Text();
System.out.println("OCR output:\n" + outText.getString());
// Destroy used object and release memory
api.End();
outText.deallocate();
pixDestroy(image);
}
答案 0 :(得分:0)
我找到了答案。我必须设置tessInst.setPageSegMode(3); 如果您在命令行中查看tesseract的帮助部分,它会为您提供选择将哪个数字用于什么目的。