gpt4 book ai didi

python - 从文件名读取单页 .tif 文件作为 multipage.tiff

转载 作者:行者123 更新时间:2023-12-04 13:06:02 25 4
gpt4 key购买 nike

更新:我发现从 OCRed 文件创建 pdf 文件是不合理的

所以最好保持原样,不进行转换。我仍然遇到一些图像已连接而另一些是 1 个寻呼机的问题。

data = []
listOfPages = glob.glob(r"C:/Users/name/test/*.tif")
for entry in listOfPages:
text = pytesseract.image_to_string(
Image.open(entry), lang="en"
)
data.append(text)
df0 = pd.DataFrame(data, columns =['raw_text'])

这会创建一个 pandas df,其中每一行都是 .tif 文件第一页(单页)的字符串。我如何连接 tif 文件(参见原始问题)以获得完整的多页字符串?

原问题:我想将 my_folder 中的单页 .tif 文件转换为 pdf_folder 中的多页 .pdf 文件。没有后续页面的 TIFF 也应转换为单页 PDF。最终,我想要一个通过对多个基于图像的 TIFF 文件进行 OCR 处理而创建的文本 PDF。

因此我从文件名模式推断出应该放在一起的 .tiff 文件组:

Drs_1_00109_1_ADS.tif
Drs_1_00099_1_ADS_000.tif
Drs_1_00099_1_ADS_001.tif
Drs_1_00099_1_ADS_002.tif
Drs_1_00186_1_ADS.tif
Drs_1_00192_1_ADS_000.tif
Drs_1_00192_1_ADS_001.tif

例如 Drs_1_00192_1_ADS_000.tifDrs_1_00192_1_ADS_001.tif(这是两张 [单页] 图片)我想转换为包含这两个图片文本数据的 2 页 Drs_1_00192_1_ADS.pdf。该代码适用于单页 pdf 创建。 我怎样才能使文件名中的所述多页模式起作用?

谢谢!

最佳答案

我会通过遍历所有以 000.tif 结尾的文件来做到这一点,这大概是多页文档的起点,然后附加由于递增后缀而产生的文件,直到文件是失踪。

#!/usr/bin/env python3

import os
from PIL import Image
from glob import glob

# Iterate over all files ending in '000.tif' and find their friends (subsequent pages)
for filename in glob('*_000.tif'):
# Work out stem of filename
stem = filename.replace('_000.tif', '')
print(f'DEBUG: stem={stem}')

# Build list of images to be put in this PDF
images = [Image.open(filename)]
index = 1
while True:
this = f'{stem}_{index:03d}.tif'
print(f'DEBUG: this={this}')
if os.path.isfile(this):
images.append(Image.open(this))
index += 1
else:
break
output = stem + '.pdf'
print(f'DEBUG: Saving {len(images)} pages to {output}')
images[0].save(output, save_all=True, append_images=images[1:])

示例输出

DEBUG: stem=Drs_1_00192_1_ADS
DEBUG: this=Drs_1_00192_1_ADS_001.tif
DEBUG: this=Drs_1_00192_1_ADS_002.tif
DEBUG: this=Drs_1_00192_1_ADS_003.tif
DEBUG: this=Drs_1_00192_1_ADS_004.tif
DEBUG: Saving 4 pages to Drs_1_00192_1_ADS.pdf
DEBUG: stem=Drs_1_00099_1_ADS
DEBUG: this=Drs_1_00099_1_ADS_001.tif
DEBUG: this=Drs_1_00099_1_ADS_002.tif
DEBUG: this=Drs_1_00099_1_ADS_003.tif
DEBUG: Saving 3 pages to Drs_1_00099_1_ADS.pdf

请注意,您可以轻松地使用 OpenCV 读取文件,只需替换:

image = Image.open(filename)

image = cv2.imread(filename)

但是,您不能像使用 PIL 那样使用 OpenCV 编写 PDF,所以我只是坚持使用 PIL。如果您还记得 PIL 使用 RGB 顺序而 OpenCV 使用 BGR,那么您可以轻松地在 PILOpenCV 之间切换,所以您可以通过以下方式从 PIL 转到 OpenCV:

OpenCVImage = np.array(PILImage)[...,::-1]

PILImage = Image.fromarray(OpenCVImage[...,::-1])

关于python - 从文件名读取单页 .tif 文件作为 multipage.tiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69464282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com