C:\Users\huawei\PycharmProjects\python.exe C:\Users\huawei\PycharmProjects\pythonProject4\识别文字.py Traceback (most recent call last): File "C:\Users\huawei\PycharmProjects\pythonProject4\识别文字.py", line 21, in <module> ws.cell(row=i+1, column=j+1).value = col ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\huawei\AppData\Roaming\Python\Python311\site-packages\openpyxl\cell\cell.py", line 218, in value self._bind_value(value) File "C:\Users\huawei\AppData\Roaming\Python\Python311\site-packages\openpyxl\cell\cell.py", line 197, in _bind_value value = self.check_string(value) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\huawei\AppData\Roaming\Python\Python311\site-packages\openpyxl\cell\cell.py", line 165, in check_string raise IllegalCharacterError(f"{value} cannot be used in worksheets.") openpyxl.utils.exceptions.IllegalCharacterError: cannot be used in worksheets. 进程已结束,退出代码1
时间: 2023-07-17 17:03:24 浏览: 273
这个错误是由于在尝试将识别的文字写入Excel单元格时,遇到了一个非法字符导致的。根据错误信息,非法字符是``。
这个字符是换页符的特殊字符,Excel不允许在单元格中使用。为了解决这个问题,您可以在将文字写入单元格之前,对识别的文字进行处理,将其中的非法字符替换为合法的字符。
以下是一个修改后的示例代码,使用`replace`方法将非法字符替换为空格:
```python
import pytesseract
from PIL import Image
import openpyxl
# 读取图片
image = Image.open('input.png')
# 使用pytesseract进行文字识别
text = pytesseract.image_to_string(image)
# 创建一个新的Excel文件,并获取活动工作表
wb = openpyxl.Workbook()
ws = wb.active
# 将识别后的文字按行分割,并写入Excel中
rows = text.split('\n')
for i, row in enumerate(rows):
# 按列分割文字,并写入单元格
columns = row.split('\t')
for j, col in enumerate(columns):
# 替换非法字符为合法字符
col = col.replace('\x0c', ' ')
ws.cell(row=i+1, column=j+1).value = col
# 保存Excel文件
wb.save('output.xlsx')
```
在上述代码中,我们使用`replace`方法将`\x0c`(换页符的Unicode编码)替换为空格。这样,识别的文字中的非法字符就会被替换为合法字符,不再引发错误。
请尝试使用修改后的代码,并确保输入的图片和Excel文件路径正确。如果仍然遇到问题,请提供更多的错误信息以供参考。
阅读全文