首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pdfplumber从pdf文件中提取文本

使用pdfplumber从pdf文件中提取文本
EN

Stack Overflow用户
提问于 2021-06-22 09:58:19
回答 1查看 568关注 0票数 0

我想从pdf文件中提取文本,尝试:

代码语言:javascript
复制
directory = r'C:\Users\foo\folder'

for x in os.listdir(directory):
    print(x)
    x = x.replace('.pdf','')
    filename = os.fsdecode(x)
    print(x)

    if filename.endswith('.pdf'):
        with pdfplumber.open(x) as pdf1:
            page1 = pdf1.pages[0]
            text1 = page1.extract_text()
            print(text1)

然后打印出来:

代码语言:javascript
复制
20170213091544343.pdf
20170213091544343

看到文件名为20170213091544343,我补充道:

代码语言:javascript
复制
    else:
        with pdfplumber.open(x) as pdf1:
                page1 = pdf1.pages[0]
                text1 = page1.extract_text()
                print(text1)

要读取文件以防文件名没有.pdf且捕获到错误,请执行以下操作:

代码语言:javascript
复制
20170213091544343.pdf
20170213091544343
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-34-e370b214f9ba> in <module>
     16 
     17     else:
---> 18         with pdfplumber.open(x) as pdf1:
     19                 page1 = pdf1.pages[0]
     20                 text1 = page1.extract_text()

C:\Python38\lib\site-packages\pdfplumber\pdf.py in open(cls, path_or_fp, **kwargs)
     56     def open(cls, path_or_fp, **kwargs):
     57         if isinstance(path_or_fp, (str, pathlib.Path)):
---> 58             fp = open(path_or_fp, "rb")
     59             inst = cls(fp, **kwargs)
     60             inst.close = fp.close

FileNotFoundError: [Errno 2] No such file or directory: '20170213091544343'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-22 12:28:31

os.listdir()只提供filename,您必须使用directory加入它

代码语言:javascript
复制
for filename in os.listdir(directory):

    fullpath = os.path.join(directory, filename)

    #print(fullpath)

而且你必须保持exension .pdf

代码语言:javascript
复制
import os
import pdfplumber

directory = r'C:\Users\foo\folder'

for filename in os.listdir(directory):
    if filename.endswith('.pdf'):

        fullpath = os.path.join(directory, filename)
        #print(fullpath)

        #all_text = ""

        with pdfplumber.open(fullpath) as pdf:
            for page in pdf.pages:
                text = page.extract_text()
                print(text)
                #all_text += text

        #print(all_text)

或使用页码

代码语言:javascript
复制
        with pdfplumber.open(fullpath) as pdf:
            for number, page in enumerate(pdf.pages, 1):
                print('--- page', number, '---')
                text = page.extract_text()
                print(text)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68076588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档