关于拆分PDF和OCR识别
Posted
技术标签:
【中文标题】关于拆分PDF和OCR识别【英文标题】:Regarding Splitting PDF and OCR Recognition 【发布时间】:2021-07-14 08:15:12 【问题描述】:我有很多 pdf 文件,它们是作品的扫描版本。我需要在 pdf 中拆分单个页面。
例如,如果有 1 页。我需要将一页拆分为页眉部分、页脚部分、主体部分和侧边部分。
什么编程语言和库给了我最大的灵活性来完成这样的任务,而无需我做所有繁重的工作。我对 Python 很熟悉。我知道 Python 的 PDF 和 OCR 库,但我找不到任何关于拆分单个页面的信息。
然后最后想将 pdf 页面的吐出部分传递给 OCR 以识别字符并输出到 csv 或文本文件。
提前谢谢你....
【问题讨论】:
【参考方案1】:要以非常简单的方式拆分页面,我建议使用PDF Pluber,它是一个非常强大且有据可查的工具,用于从 PDF 中提取文本、表格、图像。
此外,它还有一个非常方便的功能,称为crop
,允许您裁剪和提取您需要的页面部分。
作为一个例子,代码将是这样的(注意这将适用于任意数量的页面):
filename = 'path/to/your/PDF'
crop_coords = [x0, top, x1, bottom]
text = ''
pages = []
with pdfplumber.open(filename) as pdf:
for i, page in enumerate(pdf.pages):
my_width = page.width
my_height = page.height
# Crop pages
my_bbox = (crop_coords[0]*float(my_width), crop_coords[1]*float(my_height), crop_coords[2]*float(my_width), crop_coords[3]*float(my_height))
page_crop = page.crop(bbox=my_bbox)
text = text+str(page_crop.extract_text()).lower()
pages.append(page_crop)
坐标解释如下:
x0 = % Distance from left vertical cut to left side of page.
top = % Distance from upper horizontal cut to upper side of page.
x1 = % Distance from right vertical cut to right side of page.
bottom = % Distance from lower horizontal cut to lower side of page.
【讨论】:
嗨!感谢您的快速回复。我在 Jupyter Notebook 上试过这个。但是当我运行它时,它给了我一个值错误“代码”。我尝试将 x0、top、x1 和 bottom 的值输入为 20、20、20、20。('ValueError: Bounding box (Decimal('41920.000'), Decimal('96930.000'), Decimal('83840.000'), Decimal('161550.000')) 完全在父页面边界框之外(Decimal('0')、Decimal('0')、Decimal('2096.000')、Decimal('3231.000'))') 这些值是 1 的小数,例如百分比。因此,例如使用 [0, 0, 1, 1] 将不会裁剪页面(您将保留整个区域)。尝试输入值 嗨@anony,如果这个或任何答案已经解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。以上是关于关于拆分PDF和OCR识别的主要内容,如果未能解决你的问题,请参考以下文章
制成双层pdf格式进行OCR识别时缺少两项不能OCR识别怎么办