docparser를 사용하여 Excel에서 Pdfs로 변환 중입니다. 그러나 docparser에서 스캔 한 pdfs를 제대로 처리 할 수 없습니다. 그래서 일반 PDF 파일에서 스캔 한 pdfs를 분리해야하며 docparser (즉 API 호출)를 통해서만 일반 pdfs를 처리하고 싶습니다. 더 이상 일할 수 있도록 프로그래밍 방식으로의 PDF 유형 (스캔 또는 일반)을 식별 할 수있는 방법이 있습니까? 누구든지이 문제를 해결하는 방법을 알고 있다면 .....정상 (검색 가능) 또는 스캔 (이미지) 여부에 관계없이 프로그래밍 방식으로 (Java에서) PDF를 인식하는 방법은 무엇입니까?
-1
A
답변
0
마지막으로, 내 질문에 대한 해결책을 찾았습니다.하지만 표준이 아닙니다. (나는 생각합니다.) 댓글을 달고 도움을 주신 분들께 감사드립니다. 사실 오면 Pdfbox 라이브러리 우리가 스캔 한 PDF 파일의 페이지를 추출하여 이미지 객체 (PDImageXObject)의 인스턴스에 각 페이지를 비교합니다 사용
, 페이지가 이미지로 계산되며, 우리는 할 수 이미지를 센다. 이미지는 pdf의 페이지 수와 같습니다. 스캔 된 PDF이라고합니다. 여기
가 코드 ... 내가 아는 한public static String testPdf(String filename) throws IOException
{
String s = "";
int g = 0;
int gg = 0;
PDDocument doc = PDDocument.load(new File(filename));
gg = doc.getNumberOfPages();
for(PDPage page:doc.getPages())
{
PDResources resource = page.getResources();
for(COSName xObjectName:resource.getXObjectNames())
{
PDXObject xObject = resource.getXObject(xObjectName);
if (xObject instanceof PDImageXObject)
{
((PDImageXObject) xObject).getImage();
g++;
}
}
}
doc.close();
if(g==gg) // pdf pages if equal to the images
{
return "Scanned pdf";
}
else
{
return "Searchable pdf";
}
}
되면, PDF 수준에 당신이 것, 거기에 .. "정상"과 "스캔"PDF 사이에 차이가 없다 그래서 경험적으로해야한다. 예를 들어, 모든 페이지에 용지 크기의 90 % + 이미지가 포함되어 있으면 스캔 한 PDF라는 것을 알 수 있습니다 .. – xs0
일부 스캔 된 PDF는 메타 데이터에 스캐너 브랜드 태그가 있으므로 그것. 그러나 스캐너가 작성된 pdf의 메타 데이터를 추가하거나 수정하지 않으면 식별하기가 정말 어려울 것으로 생각됩니다. –
답변을 주셔서 고맙습니다.하지만 Tabula-Pdf를 Excel 도구에 사용하고 스캔 한 pdf를 업로드하면 "업로드 된 파일이 스캔 된 이미지이므로 정확한 결과를 제공하지 않을 수 있습니다 ...."라는 팝업이 나타납니다. "그래서 나는 스캔 한 Pdfs를 식별 할 수있는 확실한 방법이 존재한다고 생각한다 ... –