上一篇:电脑可以定时自动关机吗 电脑能定时关机么-电脑 电脑定时自动关机是什么原因
下一篇:使用Python实现pdf转图片再进行OCR识别 python.pdf1.先pdf转图片示例代码import osfrom pdf2image import convert_from_path PDF文件路径pdf_path = ‘/Users/xxx/2022.pdf’ 输出图片的文件夹output_folder = ‘./output_images2022’ 输出图片的命名格式output_name = ‘page’ 如果输出文件夹不存在,创建它if not os.path.exists(output_folder): os.makedirs(output_folder) 将PDF转换为图像列表,设置分辨率为300 DPIimages = convert_from_path(pdf_path, dpi=300) 保存每一页为PNG图片for i, image in enumerate(images): image.save(f’output_folder}/output_name}_i+1}.png’, ‘PNG’)2.OCR识别示例代码from PIL import ImageEnhanceimport pytesseractfrom PIL import Imagefrom openpyxl import Workbook 配置 Tesseract 的路径(如果需要) pytesseract.pytesseract.tesseract_cmd = r’/usr/local/bin/tesseract’ Mac 的路径 pytesseract.pytesseract.tesseract_cmd = r’C:Program FilesTesseract-OCRtesseract.exe’ Windows 的路径 打开图片 image_path = “/Users/xxx/page_3.png” 替换为你的图片路径def enhance_image(img): img = img.convert(‘L’) 转灰度 img = ImageEnhance.Contrast(img).enhance(2.0) return imgdef allimngs(image_path): image = Image.open(image_path) image = enhance_image(image) 使用 pytesseract 进行 OCR text = pytesseract.image_to_string(image, lang=”chi_sim”) 中文 打印提取的文本 print(“提取的文本:”) print(text.replace(‘ ‘, ”)) return text.replace(‘ ‘, ”) 统计子字符串出现次数class TrieNode: def __init__(self): self.children = } self.keywords = []class Trie: def __init__(self): self.root = TrieNode() def insert(self, keyword): node = self.root for char in keyword: if char not in node.children: node.children[char] = TrieNode() node = node.children[char] node.keywords.append(keyword)def count_keywords(text, keywords): 去重关键词以确保唯一性 keywords = list(set(keywords)) 构建Trie树 trie = Trie() for kw in keywords: trie.insert(kw) 初始化计数器 counters = kw: 0 for kw in keywords} i = 0 n = len(text) while i < n: current_node = trie.root max_len = 0 current_len = 0 end_pos = i 寻找从当前位置开始的最长匹配关键词 for j in range(i, n): char = text[j] if char in current_node.children: current_node = current_node.children[char] current_len += 1 if current_node.keywords: 当前节点是某个关键词的小编觉得 max_len = current_len end_pos = j + 1 更新结束位置为当前字符的下一个位置 else: break 无后续匹配,退出循环 if max_len > 0: 更新所有匹配的关键词计数器 for kw in current_node.keywords: counters[kw] += 1 i = end_pos 跳跃到已匹配部分的末尾 else: i += 1 无匹配,移动到下一个字符 return countersif __name__ == “__main__”: keywords = [‘矮小’, ‘安于现状’, ‘暗藏’, ‘暗淡’, ‘暗黑’] all_text = ” workbook = Workbook() sheet = workbook.active for i in range(108): i = i+1 image_path = f”/Users/xxx/output_images2022/page_i}.png” all_text = all_text + allimngs(image_path) all_text = all_text.replace(‘ ‘, ”).replace(‘n’, ”) result = count_keywords(all_text, keywords) num = 1 for k, v in result.items(): sheet[f’Anum}’] = k sheet[f’Bnum}’] = v print(k, v, num) num = num + 1 workbook.save(filename=’2022.xlsx’)3.聪明补充Python中图片与pdf识别文本的OCR技巧1、PaddleOCR:基于百度飞桨框架开发,模型丰富,支持多语言识别,包括中文、英文等。性能强大,适合复杂场景的文字识别安装 PaddleOCR 库:pip install paddleocr示例代码from paddleocr import PaddleOCR, draw_ocrfrom PIL import Image 初始化 PaddleOCR 参数解释: `lang`:指定语言模型,如 ‘en’(英文)、’ch’(中文)等。 `use_angle_cls`:是否启用文字路线分类器。ocr = PaddleOCR(use_angle_cls=True, lang=’en’) 也可以设置为 ‘ch’ 用于中文[^28^] 指定图片路径img_path = ‘example.jpg’ 替换为你的图片路径 执行 OCR 识别result = ocr.ocr(img_path, cls=True) `cls=True` 表示启用路线分类器 打印识别结局for line in result: print(line) 可选:绘制识别结局并保存if result: image = Image.open(img_path).convert(‘RGB’) boxes = [line[0] for line in result] 提取文字框 txts = [line[1][0] for line in result] 提取文字内容 scores = [line[1][1] for line in result] 提取置信度 绘制结局 im_show = draw_ocr(image, boxes, txts, scores, font_path=’path/to/PaddleOCR/doc/fonts/simfang.ttf’) im_show = Image.fromarray(im_show) im_show.save(‘result.jpg’) 保存绘制后的图片[^28^]2、RapidOCR开门见山说,确保安装了 RapidOCR 的 ONNXRuntime 版本,这一个轻量级且高效的推理引擎:pip install rapidocr_onnxruntime示例代码:识别数字和字母下面内容代码展示了怎样使用 RapidOCR 识别图片中的数字和字母,并仅打印识别结局:from rapidocr_onnxruntime import RapidOCR 初始化 OCR 引擎ocr = RapidOCR() 指定图片路径img_path = ‘example.jpg’ 替换为你的图片路径 执行识别result, _ = ocr(img_path) 提取并打印识别结局(仅数字和字母)if result: for line in result: text = line[1] 提取文字内容 筛选只包含数字和字母的文本 if text.isalnum(): print(text)else: print(“未识别到文字”)注意事项图片路径:确保 img_path 指向的图片包含数字或字母。语言设置:默认情况下,RapidOCR 支持中英文混合识别。如果需要识别其他语言,可以参考文档进行配置。环境要求:确保 Python 版本为 3.6 或更高。3、EasyOCR特点:易于使用,支持多种语言(包括中文、英文等),基于深度进修技术,适合初学者和快速集成。安装技巧:pip install easyocr使用示例:import easyocr reader = easyocr.Reader([‘en’, ‘ch_sim’]) 支持多语言img_path = ‘example.jpg’result = reader.readtext(img_path)for line in result: print(line[1]) 打印识别结局4、Pytesseract特点:Tesseract 的 Python 封装,支持多种语言,使用简单,适合传统 OCR 任务。安装技巧:pip install pytesseract需要先安装 Tesseract OCR,可以从 Tesseract 官网 下载。使用示例:from PIL import Imageimport pytesseract img_path = ‘example.jpg’text = pytesseract.image_to_string(Image.open(img_path), lang=’eng’)print(text) 打印识别结局5、DocTR特点:专注于文档分析和表格识别,能够提取文档中的结构化信息,适合处理复杂布局的文档。安装技巧:pip install python-doctr使用示例:from doctr.models import ocr_predictorfrom doctr.io import DocumentFile img_path = ‘example.jpg’doc = DocumentFile.from_images(img_path)model = ocr_predictor(pretrained=True)result = model(doc)for block in result.pages[0].blocks: for line in block.lines: for word in line.words: print(word.value) 打印识别结局6、PyOCR特点:封装了多个 OCR 引擎(如 Tesseract、Cuneiform 等),提供了统一的接口。安装技巧:pip install pyocr使用示例:import pyocrfrom PIL import Image tools = pyocr.get_available_tools()ocr_tool = tools[0]img_path = ‘example.jpg’text = ocr_tool.image_to_string(Image.open(img_path), lang=’eng’)print(text) 打印识别结局选择建议:速度优先:推荐使用 RapidOCR 或 EasyOCR。准确性优先:推荐使用 PaddleOCR。易用性优先:推荐使用 EasyOCR。文档分析优先:推荐使用 docTR。注意:根据你的具体需求(如语言支持、应用场景、性能要求等),可以选择最适合的 OCR 库。到此这篇关于使用Python实现pdf转图片再进行OCR识别的文章就介绍到这了,更多相关Python pdf转图片内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 无论兄弟们可能感兴趣的文章:怎样使用Python进行PDF图片识别OCRPython实现将图片批量转为PDF用Python将PDF文件转存为图片的实现技巧使用Python实现将PDF转为图片Python 图片文字识别的实现之PaddleOCRPython调用百度OCR实现图片文字识别的示例代码python实现百度OCR图片识别经过解析