OCR PDF 到文本
OCR PDF to text
我正在使用 Tess4J 从 PDF OCR 中提取文本。它工作得很好(需要很多时间),但它不会检测列并将两列的行一起打印出来。
尽管如果我使用 "convert" 将 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 代码
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);
}
我找到了答案。我必须设置 tessInst.setPageSegMode(3);
如果您在命令行中查看 tesseract 的帮助部分,它会为您提供选项应该使用什么数字。
我正在使用 Tess4J 从 PDF OCR 中提取文本。它工作得很好(需要很多时间),但它不会检测列并将两列的行一起打印出来。 尽管如果我使用 "convert" 将 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 代码
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);
}
我找到了答案。我必须设置 tessInst.setPageSegMode(3); 如果您在命令行中查看 tesseract 的帮助部分,它会为您提供选项应该使用什么数字。