Pdf 如何使用Tesseract
我正在尝试使用Tesseract(Tesser4j)OCR将PDF文件中的图像(每页都是扫描图像)转换为文本,但它不起作用:(参见代码中的注释)Pdf 如何使用Tesseract,pdf,tesseract,Pdf,Tesseract,我正在尝试使用Tesseract(Tesser4j)OCR将PDF文件中的图像(每页都是扫描图像)转换为文本,但它不起作用:(参见代码中的注释) publicstaticvoidmain(字符串[]args)引发IOException { Tesseract实例=Tesseract.getInstance();//JNA接口映射 PdfReader reader=新PdfReader(前言);//PDF文件D:\PDF\test.PDF int n=reader.getXrefSize(); P
publicstaticvoidmain(字符串[]args)引发IOException
{
Tesseract实例=Tesseract.getInstance();//JNA接口映射
PdfReader reader=新PdfReader(前言);//PDF文件D:\PDF\test.PDF
int n=reader.getXrefSize();
PdfObject对象;
溪流;
//寻找图像和操作图像流
对于(int i=0;i
为什么getPdfObject()
总是返回null
这个问题的答案与此无关。代码中还有一个更重要的错误:假设PDF中的每个流对象都是图像流。这是完全错误的。即使PDF的所有内容都由扫描的图像组成,您仍然会有其他流,例如定义扫描图像在页面上位置的页面内容流
您应该阅读我的答案,并从类中获取每个特定页面上所有图像的图像字节
请扔掉你的代码,重新开始。您已经复制/粘贴了我在我的书“iText in Action”的上下文中编写的一个示例,但您没有阅读我添加的关于此示例的警告。你必须站出来改进你的问题
public static void main(String[] args) throws IOException
{
Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
PdfReader reader = new PdfReader(PREFACE); // a PDF File D:\pdf\test.pdf
int n = reader.getXrefSize();
PdfObject object;
PRStream stream;
// Looking for image and manipulating image stream
for (int i = 0; i < n; i++)
{
object = reader.getPdfObject(i); // every time object null ?why
if (object == null || !object.isStream())
continue;
stream = (PRStream)object;
PdfImageObject image = new PdfImageObject(stream);
BufferedImage bi = image.getBufferedImage();
try {
String result = instance.doOCR(bi); //take Buffered iamge to transfor ti
System.out.println(result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
stream.clear();
}
}
}