IT박스

PDF에서 텍스트를 추출하는 방법?

itboxs 2020. 6. 21. 20:27
반응형

PDF에서 텍스트를 추출하는 방법? [닫은]


PDF에서 텍스트와 이미지를 추출하기 위해 라이브러리 / API를 추천 할 수 있습니까? 문서의 미리 알려진 영역에 포함 된 텍스트를 얻을 수 있어야합니다. 따라서 API는 페이지의 각 요소에 대한 위치 정보를 제공해야합니다.

해당 데이터를 형식 xml또는 json형식 으로 출력하고 싶습니다 . 우리는 현재 꽤 좋은 것처럼 보이지만 다른 사람들의 경험과 제안을 듣고 싶은 PdfTextStream보고 있습니다.

프로그래밍 방식으로 pdf에서 텍스트를 추출하는 대안 (상업적 또는 무료)이 있습니까?


가져와야 할 데이터 테이블이 포함 된 400 페이지 pdf 파일이 제공되었습니다. 운 좋게도 이미지가 없습니다. Ghostscript 가 나를 위해 일했습니다.

gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

출력 파일은 헤더 등으로 페이지로 분할되었지만 빈 줄 등을 제거하고 30,000 개의 레코드를 모두 빨아 들일 수있는 앱을 쉽게 작성할 수있었습니다. -dSIMPLE그리고 -dCOMPLEX이 경우에 차이 않았다.


오늘부터 나는 그것을 알고 다음 PDF 파일에서 텍스트 추출을위한 가장 좋은 것은 이다 TET, 텍스트 추출 툴킷 . TET은 PDFlib.com 제품군의 일부입니다.

PDFlib.com은 Thomas Merz의 회사입니다. 그의 이름을 모르는 경우 : Thomas Merz는 "PostScript and PDF Bible"의 저자입니다.

TET의 첫 번째 화신은 라이브러리 입니다. 그것은 페이지의 모든 요소에 대한 위치 정보를 포함하여 Budda006이 원했던 모든 것을 할 수 있습니다. 아, 그리고 이미지를 추출 할 수도 있습니다. 조각으로 조각난 이미지를 재결합합니다.

pdflib.com은이 기술의 또 다른 화신 인 Acrobat 용 TET 플러그인을 제공 합니다. 그리고 세 번째 화신은 PDFlib TET iFilter 입니다. 사용자 데스크탑을위한 독립형 도구입니다. 이 두 가지 모두 비영리 목적으로 사용할 수 있습니다 (맥주 에서처럼).

그리고 정말 강력합니다. Adobe 자체 텍스트 추출보다 훨씬 좋습니다. 다른 도구 (Adobe 포함)가 쓰레기를 뱉어내는 텍스트를 추출했습니다.

방금 데스크톱 독립형 도구를 테스트했으며 웹 페이지에서 말하는 내용이 사실입니다. 매우 좋은 명령 줄이 있습니다. 이 도구가 처리 한 "문제가있는"PDF 테스트 파일 중 일부가 만족스럽게 처리되었습니다.

이제부터는 모든 정교하고 까다로운 PDF 텍스트 추출 요구 사항에 대한 권장 사항이 될 것입니다.

TET은 정말 대단합니다. 테이블을 감지합니다. 테이블 내부에서 여러 열에 걸쳐있는 셀을 식별합니다. 각 테이블 셀의 테이블 행과 내용을 개별적으로 식별합니다. 하이픈을 매우 잘 처리합니다. 하이픈을 제거하고 완전한 단어를 복원합니다. 비 ASCII 언어 (CJK, 아랍어 및 히브리어 포함)를 지원합니다. 합자를 만나면 원래 문자가 복원됩니다.

시도 해봐.


Linux 및 Windows에서 모두 사용할 수있는 효율적인 명령 행 도구, 오픈 소스, 무료, pdftotext. 이 도구는 xpdf 라이브러리의 일부입니다.

http://en.wikipedia.org/wiki/Pdftotext


파이썬의 경우 PDFMinerpyPDF2가 있습니다. 이에 대한 자세한 정보는 PDF를 텍스트로 변환하기위한 Python 모듈을 참조하십시오 .


여기 내 제안이 있습니다. PDF에서 텍스트를 추출하려면 pdf 파일을 Google 문서 도구로 가져온 다음 .html, .odf, .rtf, .txt 등과 같은보다 친숙한 형식으로 내보낼 수 있습니다. 모두 Drive API를 사용하여 . 무료이며 견고합니다. 보세요:

https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get

나머지 API이므로 모든 프로그래밍 언어와 호환됩니다. 내가 aboove에 게시 한 링크에는 Java, .NET, Python, PHP, Ruby 등의 많은 언어에 대한 실제 예제가 있습니다.

도움이 되길 바랍니다.


PdfTextStream (당신이보고 있다고 말함 )은 이제 단일 스레드 응용 프로그램에서 무료 입니다. 제 생각에는 그 품질이 다른 라이브러리보다 훨씬 뛰어납니다 (예 : 펑키 임베디드 글꼴 등).

또는 오픈 소스 인 Apache PDFBox를 살펴보아야 합니다.


Docotic.Pdf 라이브러리PDF 파일 에서 텍스트를 일반 텍스트 또는 각 청크에 대한 좌표가있는 텍스트 청크 모음 으로 추출 하는 데 사용될 수 있습니다 .

Docotic.Pdf를 사용하여 PDF 에서 이미지추출 할 수도 있습니다 .

면책 조항 : 저는 Bit Miracle에서 일합니다.


여기 주석 중 하나는 Windows에서 gs를 사용했습니다. Linux / OSX에서도 다음과 같은 구문으로 성공했습니다.

gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

후자는 줄당 1 문자를 출력하기 때문에 dSIMPLE대신에 사용 했습니다 dCOMPLEX.


질문은 특히 PDF에서 XML로 데이터를 가져 오는 대체 도구에 대한 것이므로 정확하게 수행 할 수있는 상용 도구 "ByteScout PDF Extractor SDK"살펴 보는 것이 좋습니다 . 위치 데이터 (x, y) 및 글꼴 정보 :

소스 PDF의 텍스트 :

Products | Units | Price 

출력 XML :

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>

추신 : 또한 텍스트를 테이블 기반 구조로 나눕니다.

공개 : ByteScout에서 일합니다.


I know that this topic is quite old, but this need is still alive. I read many documents, forum and script and build a new advanced one which supports compressed and uncompressed pdf :

https://gist.github.com/smalot/6183152

In some cases, command line is forbidden for security reasons. So a native PHP class can fit many needs.

Hope it helps everone


The best thing I can currently think of (within the list of "simple" tools) is Ghostscript (current version is v.8.71) and the PostScript utility program ps2ascii.ps. Ghostscript ships it in its lib subdirectory. Try this (on Windows):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

This command processes pages 3-7 of input.pdf. Read the comments in the ps2ascii.ps file itself to see what the "weird" numbers and additional infos mean (they indicate strings, positions, widths, colors, pictures, rectangles, fonts and page breaks...). To get a "simple" text output, replace the -dCOMPLEX part by -dSIMPLE.


For image extraction, pdfimages is a free command line tool for Linux or Windows (win32):

pdfimages: Extract and Save Images From A Portable Document Format ( PDF ) File


Apache pdfbox has this feature - the text part is described in:

http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html

for an example implementation see https://github.com/WolfgangFahl/pdfindexer

the testcase TestPdfIndexer.testExtracting shows how it works


QuickPDF seems to be a reasonable library that should do what you want for a reasonable price.

http://www.quickpdflibrary.com/ - They have a 30 day trial.


On my Macintosh systems, I find that "Adobe Reader" does a reasonably good job. I created an alias on my Desktop that points to the "Adobe Reader.app", and all I do is drop a pdf-file on the alias, which makes it the active document in Adobe Reader, and then from the File-menu, I choose "Save as Text...", give it a name and where to save it, click "Save", and I'm done.

참고URL : https://stackoverflow.com/questions/3650957/how-to-extract-text-from-a-pdf

반응형