python获取pdf内容文字,只存储名字和身份证号到表格
时间: 2024-09-10 12:06:54 浏览: 54
Python中可以使用第三方库如`PyPDF2`来读取PDF文件的内容,然后使用正则表达式筛选出姓名和身份证号码这类特定的信息。以下是简单的步骤:
1. 首先,安装必要的库:
```bash
pip install PyPDF2 pandas regex
```
2. 使用`PyPDF2`打开PDF文件并提取文本:
```python
import PyPDF2
import io
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfFileReader(file)
text = ""
for page_num in range(reader.numPages):
text += reader.getPage(page_num).extractText()
return text
```
3. 使用正则表达式匹配姓名和身份证号:
```python
import re
def filter_info(text):
name_regex = r"(\b[姓名]\b[^0-9]+)"
id_regex = r"\b([1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)(\d{3})[xX]?\d{4}\b)"
names = re.findall(name_regex, text, re.IGNORECASE)
ids = re.findall(id_regex, text, re.IGNORECASE)
# 结果是一个包含姓名和身份证的列表
return {"names": names, "ids": ids}
```
4. 将结果保存到CSV或Excel表格中(假设已导入pandas库):
```python
def save_to_excel(filtered_data, output_file):
data = {
"Names": filtered_data["names"],
"ID Numbers": filtered_data["ids"]
}
df = pd.DataFrame(data)
df.to_csv(output_file, index=False)
```
将上述函数结合在一起,你可以遍历PDF文件中的所有页面并提取信息:
```python
pdf_path = "example.pdf"
output_file = "filtered_data.csv"
text = extract_text_from_pdf(pdf_path)
filtered_data = filter_info(text)
save_to_excel(filtered_data, output_file)
```
阅读全文