使用 Dart 实现文字识别

news/2024/12/12 12:49:23/文章来源:https://www.cnblogs.com/ocr12/p/18602197

通过调用 Tesseract OCR 工具,使用 Dart 实现从图片中提取文字的功能。

实现步骤
安装 Dart SDK
在本地环境中安装 Dart SDK,如果你还没有安装,可以从 Dart 官方网站 下载并安装。

安装 Tesseract OCR 工具
安装 Tesseract OCR,这是一个开源的文字识别工具,可以识别图像中的文本。

编写 Dart 代码
使用 Dart 中的 Process 类来调用 Tesseract OCR 执行 OCR 操作,并获取图片中的文本。

代码实现
dart

import 'dart:io';
import 'dart:convert';

Future runCommand(String command) async {
// 执行系统命令并获取输出
final process = await Process.start(
command.split(' ')[0], // 命令名称
command.split(' ').sublist(1), // 参数
mode: ProcessStartMode.normal,
);

// 获取输出结果
final output = await process.stdout.transform(utf8.decoder).join();
final error = await process.stderr.transform(utf8.decoder).join();

if (error.isNotEmpty) {
throw Exception('Error occurred: $error');
}

return output;
}

Future ocrImage(String imagePath, String outputPath) async {
// 使用 tesseract 识别图像文字
final command = 'tesseract $imagePath $outputPath';
print('Running command: $command');

await runCommand(command);

// 读取 OCR 结果文件
final result = await File('$outputPath.txt').readAsString();
return result;
}

void main() async {
final imagePath = 'example.png'; // 需要识别的图像文件路径
final outputPath = 'output'; // OCR 结果保存的路径

try {
final result = await ocrImage(imagePath, outputPath);
print('OCR Result:\n$result');
} catch (e) {
print('An error occurred: $e');
}
}
代码解析
runCommand 函数
该函数用于执行系统命令,并通过 Process 类捕获命令的输出。
使用 utf8.decoder 对输出进行解码,以便后续处理。
ocrImage 函数
调用 tesseract 命令来识别图片中的文字。
在指定的输出路径保存结果,并读取 .txt 文件中的内容。
main 函数
定义输入图片路径 imagePath 和输出路径 outputPath。
调用 ocrImage 函数并打印 OCR 结果。
运行环境准备
安装 Dart SDK。
安装 Tesseract OCR 工具。
准备图片文件 example.png,这应该是一张包含可识别文字的图片。
运行步骤
将上面的代码保存到 ocr.dart 文件中。
打开终端并进入代码所在目录。
运行 Dart 程序:
bash

dart run ocr.dart
输入示例
假设 example.png 包含以下文字:

Dart OCR Example!
输出示例
运行程序后,终端中将显示识别的文字:

rust

OCR Result:
Dart OCR Example!

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

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

相关文章

[QT] MAC使用Qt Creator运行程序如何仅运行一个进程?

问题背景刚开始在 Mac 使用 QT Creator 运行项目时会发现每次 Run 程序都出现一个新的任务进程,而非类似 Windows 环境下是先 stop 之前的进程再创建。那么如何每次run后,就关闭上一次的进程,而重新拉起新进程呢? 解决方案

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 人主导的跨境电商团队公司而言,可视化团队协作办公软件就如同战场上的精良武器,助力团队精准作战,高效协同。…

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

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

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

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