<legend id='TPzGT'><style id='TPzGT'><dir id='TPzGT'><q id='TPzGT'></q></dir></style></legend>
  • <small id='TPzGT'></small><noframes id='TPzGT'>

        <bdo id='TPzGT'></bdo><ul id='TPzGT'></ul>

        <i id='TPzGT'><tr id='TPzGT'><dt id='TPzGT'><q id='TPzGT'><span id='TPzGT'><b id='TPzGT'><form id='TPzGT'><ins id='TPzGT'></ins><ul id='TPzGT'></ul><sub id='TPzGT'></sub></form><legend id='TPzGT'></legend><bdo id='TPzGT'><pre id='TPzGT'><center id='TPzGT'></center></pre></bdo></b><th id='TPzGT'></th></span></q></dt></tr></i><div id='TPzGT'><tfoot id='TPzGT'></tfoot><dl id='TPzGT'><fieldset id='TPzGT'></fieldset></dl></div>
        <tfoot id='TPzGT'></tfoot>

        利用python将图片版PDF转文字版PDF

        时间:2023-12-17

            <tfoot id='ocn7N'></tfoot>

            <small id='ocn7N'></small><noframes id='ocn7N'>

              <legend id='ocn7N'><style id='ocn7N'><dir id='ocn7N'><q id='ocn7N'></q></dir></style></legend>

                  <tbody id='ocn7N'></tbody>
                • <bdo id='ocn7N'></bdo><ul id='ocn7N'></ul>

                • <i id='ocn7N'><tr id='ocn7N'><dt id='ocn7N'><q id='ocn7N'><span id='ocn7N'><b id='ocn7N'><form id='ocn7N'><ins id='ocn7N'></ins><ul id='ocn7N'></ul><sub id='ocn7N'></sub></form><legend id='ocn7N'></legend><bdo id='ocn7N'><pre id='ocn7N'><center id='ocn7N'></center></pre></bdo></b><th id='ocn7N'></th></span></q></dt></tr></i><div id='ocn7N'><tfoot id='ocn7N'></tfoot><dl id='ocn7N'><fieldset id='ocn7N'></fieldset></dl></div>

                  下面是“利用Python将图片版PDF转换为文字版PDF”的完整攻略,具体流程如下:

                  准备工作

                  为了完成PDF转换,你需要先准备以下工具:

                  1.OCR(Optical Character Recognition,光学字符识别)库,用于将图片中的文字转换成文本格式,比较常用的有pytesseract和easyOCR;
                  2.Python环境。

                  在第一步,你需要安装OCR库。pytesseract需要先安装Tesseract OCR引擎,可通过以下命令在Windows环境下安装:

                  pip install pytesseract
                  

                  easyOCR则可以通过以下命令安装:

                  pip install easyocr
                  

                  注意:安装完成后,还需要下载easyOCR所需的模型。可以通过以下方式下载:

                  import easyocr
                  
                  reader = easyocr.Reader(['en'])
                  

                  开始转换

                  一旦所有准备工作都完成了,你现在就可以开始将图片版PDF转换为文字版PDF了。接下来,我们提供两个实例进行说明。

                  示例一

                  我们现在有一个名为example.pdf的PDF文件,其中的内容是一些图片 ,现在我们需要将这个文件转换为文本版PDF。进入Python环境后,你可以按照以下方式进行代码编写:

                  import pytesseract
                  from PIL import Image
                  from pdf2image import convert_from_path
                  from io import BytesIO
                  from PyPDF2 import PdfFileWriter, PdfFileReader
                  
                  pdf_file = 'example.pdf'
                  
                  with BytesIO() as data:
                      inputpdf = PdfFileReader(open(pdf_file, "rb"))
                      output = PdfFileWriter()
                      for i in range(inputpdf.numPages):
                          page = inputpdf.getPage(i)
                          data.write(page)
                          image = Image.open(data)
                          text = pytesseract.image_to_string(image)
                          image.close()
                          data.seek(0)
                          output.addPage(page)
                      with open('result.pdf', 'wb') as out_file:
                          output.write(out_file)
                  

                  上面的代码首先使用PyPDF2库读取原始PDF文件,并将所有页面的图片提取到内存中。然后,通过OCR库将每个页面的图片转换成文本,并使用PdfFileWriter进行页面追加输出到新的PDF文件中。最终生成的文本版PDF文件名为result.pdf。

                  示例二

                  我们这次有很多张图片,需要把它们都转换成PDF并合并成一个PDF文件,以下是代码:

                  import pytesseract
                  from PIL import Image
                  from PyPDF2 import PdfFileWriter, PdfFileReader
                  import os
                  
                  def convert_image_to_pdf(image_path, output_folder):
                      base_name = os.path.basename(image_path)
                      pdf_path = os.path.join(output_folder, os.path.splitext(base_name)[0] + '.pdf')
                      im = Image.open(image_path)
                      text = pytesseract.image_to_string(im, lang = 'eng')
                      im.close()
                      with open(pdf_path, 'wb') as f:
                          f.write(img2pdf.convert(im.filename))
                      f.close()
                  
                  def main(image_path, output_folder):
                      output = PdfFileWriter()
                      for root, dirs, files in os.walk(image_path):
                          for file in files:
                              if file.endswith('.jpg') or file.endswith('.png'):
                                  input_image_path = os.path.join(root, file)
                                  convert_image_to_pdf(input_image_path, output_folder)
                                  base_name = os.path.basename(input_image_path)
                                  pdf_path = os.path.join(output_folder, os.path.splitext(base_name)[0] + '.pdf')
                                  with open(pdf_path, 'rb') as f:
                                      pdf = PdfFileReader(f)
                                      output.addPage(pdf.getPage(0))
                      with open(os.path.join(output_folder, 'final_pdf.pdf'), 'wb') as f:
                          output.write(f)
                  
                  if __name__=='__main__':
                      main('./images', './pdfs')
                  

                  该代码主要是先将所有图片转换为PDF,然后把所有PDF文件合并成一个PDF文件。其中./images是需要转换的图片文件夹路径,./pdfs是转换后的PDF文件输出路径。最终生成的合并后PDF文件名为final_pdf.pdf。

                  总结

                  以上就是利用Python将图片版PDF转换为文字版PDF的完整攻略以及两个实例的说明。希望可以对你有所帮助。同时,我们也可以根据具体场景进行代码的优化,以提高转换的效率。

                  上一篇:python实现灰度图 下一篇:Python3中多线程编程的队列运作示例

                  相关文章

                • <small id='lyvqS'></small><noframes id='lyvqS'>

                    • <bdo id='lyvqS'></bdo><ul id='lyvqS'></ul>
                  1. <i id='lyvqS'><tr id='lyvqS'><dt id='lyvqS'><q id='lyvqS'><span id='lyvqS'><b id='lyvqS'><form id='lyvqS'><ins id='lyvqS'></ins><ul id='lyvqS'></ul><sub id='lyvqS'></sub></form><legend id='lyvqS'></legend><bdo id='lyvqS'><pre id='lyvqS'><center id='lyvqS'></center></pre></bdo></b><th id='lyvqS'></th></span></q></dt></tr></i><div id='lyvqS'><tfoot id='lyvqS'></tfoot><dl id='lyvqS'><fieldset id='lyvqS'></fieldset></dl></div>

                      <tfoot id='lyvqS'></tfoot>

                      <legend id='lyvqS'><style id='lyvqS'><dir id='lyvqS'><q id='lyvqS'></q></dir></style></legend>