R语言如何将image_ocr与cat生成的向量转为可正则处理的字符串
问题原因
你遇到的问题根本原因是错误使用了cat()函数。cat()的作用是将内容打印到控制台,它本身的返回值是NULL,哪怕你套了as.character()转换,得到的也是长度为0的空字符向量,自然没法做后续正则处理。你运行赋值语句时直接看到的文本输出,就是cat()打印到控制台的结果,这些内容根本没有被存入你定义的text变量中。
修正方案
image_ocr()返回的本身就是字符向量,要合并两个OCR结果直接用paste()拼接即可,不需要调用cat(),修正后的代码如下:
# 加载依赖包 library(magick) library(tesseract) # 读取图片文件 text.1 <- image_read("dthw02_Olympics_1.jpg") text.2 <- image_read("dthw02_Olympics_2.jpg") # 提取OCR文本并拼接,用换行符做分隔避免内容粘连 text <- paste(image_ocr(text.1), image_ocr(text.2), sep = "\n") class(text) # 返回正常的"character"类型,且包含识别到的全部内容 # 测试正则替换 # 仅替换全小写的paris text <- gsub("paris", "PARIS", text) # 如果需要匹配所有大小写形式的paris,可以加ignore.case参数 # text <- gsub("paris", "PARIS", text, ignore.case = TRUE) # 查看处理结果 print(text)
如果后续需要把处理好的文本格式化输出到控制台,再单独调用cat(text)即可,不要在赋值语句中使用cat()。
内容的提问来源于stack exchange,提问作者data_life
相关产品推荐
相关产品推荐

