如何用R语言Tesseract库将字符列表转换为规范CSV文件
解决R语言Tesseract识别结果转CSV的单元格拆分问题
核心思路
问题根源是识别后的字符列表为单字符串格式,直接写入CSV会被判定为单个单元格。需要先按换行拆分每行,再按空格拆分每列,转换成结构化数据框后再导出。
具体步骤
假设你已通过Tesseract得到识别后的字符串text:
# 示例识别结果 text <- "5 2 3 390 - 500 - 8 50 & 3 3 887 7 1 3 - 9 5 "
- 拆分每行并清理空行
# 按换行符分割成独立行 lines <- strsplit(text, "\n")[[1]] # 移除识别结果末尾的多余空行 lines <- lines[lines != ""]
- 拆分列并转换为数据框
处理每行列数不一致的情况,自动补全缺失值:
library(tibble) # 对每行按空格拆分列 split_lines <- lapply(lines, function(x) strsplit(x, "\\s+")[[1]]) # 转换为数据框,短行自动补空值 df <- as_tibble(do.call(rbind, lapply(split_lines, function(x) t(x))), .name_repair = "unique") # 自定义列名(可选) colnames(df) <- paste0("col_", seq_len(ncol(df)))
- 导出为标准CSV
write.csv(df, "output.csv", row.names = FALSE, quote = FALSE)
替代方案(直接替换分隔符)
若之前替换空格为逗号无效,大概率是识别出的是连续空格或特殊空格,先统一替换为单个逗号再导出:
# 将所有连续空格替换为单个逗号 clean_text <- gsub("\\s+", ",", text) # 写入文件保留换行结构 writeLines(clean_text, "output.csv")
该方案适合列数固定的场景,避免数据框补空值的额外处理。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

