使用 Common Lisp 实现文字识别

news/2024/12/12 12:44:21/文章来源:https://www.cnblogs.com/ocr12/p/18602194

使用 Common Lisp 编写一个程序,通过调用 Tesseract OCR 工具识别图片中的文字,并将结果输出到终端。

实现代码
lisp

(defun run-command (command)
"运行系统命令并返回输出。"
(let ((output (make-string-output-stream)))
(uiop:run-program command
:output output
:error-output t)
(get-output-stream-string output)))

(defun read-text-file (file-path)
"读取文本文件内容。"
(with-open-file (stream file-path :direction :input)
(let ((content (make-string (file-length stream))))
(read-sequence content stream)
content)))

(defun ocr-image (image-path output-path)
"调用 Tesseract OCR 将图片中的文字提取到文本文件中,并返回结果。"
(let ((command (format nil "tesseract ~a ~a" image-path output-path)))
(format t "运行命令: a%" command)
(run-command command)
(let ((text-file (concatenate 'string output-path ".txt")))
(read-text-file text-file))))

(defun main ()
"主函数,输入图片路径并调用 OCR。"
(let* ((image-path "example.png")
(output-path "output")
(ocr-result (ocr-image image-path output-path)))
(format t "OCR 结果:\na%" ocr-result)))

(main)
代码解析
run-command 函数

使用 uiop:run-program 执行系统命令。
将命令输出捕获为字符串返回。
read-text-file 函数

通过 with-open-file 打开文本文件并读取其内容。
ocr-image 函数

构造 Tesseract OCR 命令。
执行命令并读取生成的 .txt 文件内容作为 OCR 结果。
main 函数

定义图片路径 image-path 和输出路径 output-path。
调用 OCR 函数提取文字并打印结果。
运行环境准备
安装 Common Lisp 解释器(推荐使用 SBCL)。
安装 Quicklisp 包管理器。
安装 Tesseract OCR 工具。
准备一张包含文字的图片 example.png。
运行步骤
保存代码到文件 ocr.lisp。
在终端中运行 Lisp 解释器:更多内容访问ttocr.com或联系1436423940
bash

sbcl --load ocr.lisp
输出结果将显示在终端。
输入示例
假设 example.png 包含以下内容:

Common Lisp OCR!
输出示例
程序运行后在终端打印识别到的文字:

OCR 结果:
Common Lisp OCR!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851322.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 配置自动更新重启策略

I. 打开策略编辑器 【Win + R】打开 “运行” 窗口,输入: gpedit.msc打开“本地组策略编辑器”。 II. 设置不自动重启 启用策略,选择在你任何想要重启的时候重启计算机。III. 重启计算机 重启计算机,完成配置。

笔记本电脑蓝屏 硬盘损坏数据恢复

当笔记本电脑出现蓝屏故障,并且怀疑硬盘已损坏需要恢复数据时,可以参考以下步骤和建议: 一、初步处理 断开电源:在尝试任何数据恢复操作之前,首先要断开笔记本电脑的电源,以避免进一步的数据损坏或丢失。 评估蓝屏原因:蓝屏可能是由驱动程序错误、系统文件损坏、硬件故障…

.NET Core 堆结构(Heap)底层原理浅谈

https://www.cnblogs.com/lmy5215006/p/18583743 .Net托管堆布局加载堆 主要是供CLR内部使用,作为承载程序的元数据。HighFrequencyHeap存放CLR高频使用的内部数据,比如MethodTable,MethodDesc.通过is判断类型之间的继承关系,调用接口的方法和虚方法,都需要访问MethodTable…

简化版 先求每个商品品类中亏损的最大的 写入新的表中

import pandas as pd # 读取原始表 简化为仅求亏损最大的 # 路径需要双斜杠 data = pd.read_excel(D:\\work\\2\\配料统计表.xlsx,sheet_name=Sheet1) # 对数据做处理 #第一步 找到亏损类和涨出类 如果金额大于0 是亏损;否则是涨出 data_loss= data[data[差异金额]>0] …

ABB IRB4400机器人示教器维修黑屏问题

当ABB机器人IRB4400的示教器出现黑屏问题时,可能的原因包括硬件故障、软件冲突或外部干扰。以下是一些可能的解决方法:硬件故障检查:检查示教器显示屏是否损坏或老化。检查与显示屏连接的电缆或电路板是否出现故障。更换损坏的部件。软件冲突检查:检查示教器的操作系统或应…

使用正点原子的直流无刷驱动板自写FOC控制永磁同步(PMSM)电机(开环位置)

由于ST官方MotorControlWorkbench生成的FOC代码过于复杂,决定自己使用正点原子的直流无刷驱动板自己编写FOC去控制PMSM电机。FOC代码参考的是灯哥的教材DengFOC官方文档。 1、配置TIM1高级定时器 2、foc.c代码/** foc.c** Created on: Dec 11, 2024* Author: ME-LZQ*/#i…

【Office Access 2024软件下载与安装教程】

1、安装包 「Office LTSC 2024」: 链接:下载地址2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载并解压下载的安装包,双击Setup.exe安装,弹窗安装对话框2) 只留Access选项,点击一键安装3) 保持联网状态 部分在线下载更新4) 安装完成后,解压…

冬季节假日跨境电商运营压力大,哪六款软件能提升效率?

在跨境电商行业,冬季节假日的订单高峰期犹如一场紧张而关键的战役。每一个环节都需要紧密衔接、高效运转,才能在汹涌的订单浪潮中乘风破浪,收获丰硕成果。对于 J 人主导的跨境电商团队公司而言,可视化团队协作办公软件就如同战场上的精良武器,助力团队精准作战,高效协同。…

年底了,产品经理如何写好一份年终工作报告?

项目管理软件在产品经理年终汇报中发挥着关键作用。它不仅帮助产品经理高效整理和展示数据,提高汇报的准确性和逻辑性;还通过实时同步项目进度和风险管理功能,帮助产品经理及时发现问题并采取措施;同时,通过制定详细的汇报大纲和数据驱动的汇报方式,提高了汇报的专业性和…

告别混乱:文档管理系统如何重塑团队工作?

在当今数字化飞速发展的时代,团队协作效率成为企业成功的关键因素之一。而一款出色的文档管理系统软件,就如同团队的智慧中枢,默默地为各项工作提供强大的支持。 以一个项目制的营销团队为例,在日常工作中,从项目策划到执行,涉及大量的文档资料。如市场调研报告、创意策划…

信而泰推出POE交换机一站式自动化测试方案

方案背景 传统POE交换机测试工序主要有扫条码,接网线,POE供电测试,流量测试,LED测试,信息核对等,基本都依赖于手工操作,效率偏低,并且LED测试,POE供电测试依赖人工判断是否良品,容易误测。如果再考虑到操作员工变动等因素,培训员工的时间,员工操作方法不统一等情况…