如何将从 PDF 中提取的文本(使用 textract)写入 python 中的 docx 文件
How do you write text extracted from PDF (using textract) to docx files in python
我在一个 pdf 文件中有几篇文章,我试图将这些文章分开并将它们写入单独的 Docx 文件。我设法使用正则表达式将它们分开,但是当我尝试将它们写入 docx 文件时,它会抛出此错误:ValueError:所有字符串必须 XML 兼容:Unicode 或 ASCII,没有 NULL 字节或控制字符。
我的代码如下:
my_path = "/path/to/pdf"
newpath = textract.process(my_path)
newpath2 = newpath.decode("UTF-8")
result = re.findall(r'\d+ words(.*?)Document \w+', newpath2, re.DOTALL)
save_path = "/path/to/write/docx/files/"
for each in result:
import time
time=str(time.time())
finalpath = (os.path.join(save_path, time))
finalpath2 = finalpath+".docx"
mydoc = docx.Document()
mydoc.add_paragraph(each)
mydoc.save(finalpath2)
您可以删除所有空字符和控制字节字符并使用
.add_paragraph(remove_control_characters(each.replace('\x00','')))
remove_control_characters
函数可以借用Removing control characters from a string in python线程。
代码片段:
import unicodedata
def remove_control_characters(s):
return "".join(ch for ch in s if unicodedata.category(ch)[0]!="C")
my_path = "/path/to/pdf"
newpath = textract.process(my_path)
newpath2 = newpath.decode("UTF-8")
result = re.findall(r'\d+ words(.*?)Document \w+', newpath2, re.DOTALL)
save_path = "/path/to/write/docx/files/"
for each in result:
import time
time=str(time.time())
finalpath = (os.path.join(save_path, time))
finalpath2 = finalpath+".docx"
mydoc = docx.Document()
mydoc.add_paragraph(remove_control_characters(each.replace('\x00','')))
mydoc.save(finalpath2)
我在一个 pdf 文件中有几篇文章,我试图将这些文章分开并将它们写入单独的 Docx 文件。我设法使用正则表达式将它们分开,但是当我尝试将它们写入 docx 文件时,它会抛出此错误:ValueError:所有字符串必须 XML 兼容:Unicode 或 ASCII,没有 NULL 字节或控制字符。
我的代码如下:
my_path = "/path/to/pdf"
newpath = textract.process(my_path)
newpath2 = newpath.decode("UTF-8")
result = re.findall(r'\d+ words(.*?)Document \w+', newpath2, re.DOTALL)
save_path = "/path/to/write/docx/files/"
for each in result:
import time
time=str(time.time())
finalpath = (os.path.join(save_path, time))
finalpath2 = finalpath+".docx"
mydoc = docx.Document()
mydoc.add_paragraph(each)
mydoc.save(finalpath2)
您可以删除所有空字符和控制字节字符并使用
.add_paragraph(remove_control_characters(each.replace('\x00','')))
remove_control_characters
函数可以借用Removing control characters from a string in python线程。
代码片段:
import unicodedata
def remove_control_characters(s):
return "".join(ch for ch in s if unicodedata.category(ch)[0]!="C")
my_path = "/path/to/pdf"
newpath = textract.process(my_path)
newpath2 = newpath.decode("UTF-8")
result = re.findall(r'\d+ words(.*?)Document \w+', newpath2, re.DOTALL)
save_path = "/path/to/write/docx/files/"
for each in result:
import time
time=str(time.time())
finalpath = (os.path.join(save_path, time))
finalpath2 = finalpath+".docx"
mydoc = docx.Document()
mydoc.add_paragraph(remove_control_characters(each.replace('\x00','')))
mydoc.save(finalpath2)