TesseractOCRiOS文字识别

1.使用TesseractOCRiOS

使用pod添加依赖库

pod 'TesseractOCRiOS', '~> 4.0.0'
复制代码

使用TesseractOCRiOS要注意,在导入TesseractOCRiOS的类的控制器需要将它改为.mm文件

截屏2021-05-07 上午9.36.26.png

使用是导入头文件

#import <TesseractOCR/TesseractOCR.h>
复制代码
//利用TesseractOCR识别文字
- (void)tesseractRecognizeImage:(UIImage *)image {
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        G8Tesseract *tesseract = [[G8Tesseract alloc] initWithLanguage:@"eng+chi_sim"];
            //模式
        tesseract.engineMode = G8OCREngineModeTesseractOnly;
        tesseract.maximumRecognitionTime = 60;
        tesseract.pageSegmentationMode = G8PageSegmentationModeAutoOnly;
        //灰化 如果是英文或者数字推荐使用。如果是汉字不推荐使用
        //tesseract.image = [image g8_blackAndWhite];
        tesseract.image = image;
        [tesseract recognize];
        NSLog(@"识别出的文字是 - \n%@", tesseract.recognizedText);
    });
}
复制代码

原图:

截屏2021-05-07 上午9.40.24.png
如效果:

截屏2021-05-07 上午9.26.01.png

需要注意的是,识别的图片尽量高清,不然识别出来的效果很差

Demo:gitee.com/ljj.com/OCR

以下问题是主要是针对:使用TesseractOCRiOS

2.使用TesseractOCRiOS 是常碰到的问题

2.1 问题一

Showing Recent Messages
Multiple commands produce '/Users/liujiajun/Library/Developer/Xcode/DerivedData/OCR-dspupydyaqiurjgfwjejgnknqwph/Build/Products/Debug-iphoneos/TesseractOCRiOS/TesseractOCR.framework/PrivateHeaders/config_auto.h':
复制代码

这是TesseractOCRiOS因为有两个重复文件,删除任意一个文件是可以编译,但是并不知道那个有用那个没用

截屏2021-04-30 下午5.00.37.png

所以,还是修改配置比较合适,xcode-file-workSpace settings修改配置,如图:

1620349849525.jpg

2.2 Xcode setting ENABLE_BITCODE=YES

ld: -weak_library and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
复制代码

如图:

截屏2021-04-30 下午5.07.29.png

如果这种情况两种方法:

1.在TARGETS->Build Setting 搜索bitcode,改为NO

2.这个需求在Podfile添加设置

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'OCR' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for OCR

  target 'OCRTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'OCRUITests' do
    # Pods for testing
  end

  pod 'TesseractOCRiOS', '~> 4.0.0'
  
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['ENABLE_BITCODE'] = 'NO'
      end
    end
  end

end
复制代码

2.3 问题三 “***line53”

actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file tessdatamanager.cpp, line 53
复制代码

这个问题是,TesseractOCRiOS版本与traineddata版本不符合

2.4 问题四 “TESSDATA_PREFIX environment variable”

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'chi_sim'
复制代码

这个是在添加 tessdata 导致的问题

1620352293957.jpg
最好的方式是放在项目文件夹,在工程添加file,选择Create folder references

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享