RNCamera 文本识别在人像模式下失败

RNCamera text recognition fails on Portrait mode

我正在使用 react-native-camera RNCamera 在弹出模式下开发一个应用程序。

顺便说一句,文本识别功能应该只适用于 Android。

在纵向模式下,它仅在每个检测事件中检测单字符或双字符,例如 'O'、'IC'。

当我旋转到横向模式时,效果很好。

以下是我处理事件并呈现它的方式:

onTextRecognized = ({textBlocks}) => this.setState({ detectedTexts: textBlocks.map(b => b.value) })

renderDetectedText() {
    return (
      <View style={[styles.facesContainer,{left: 10, top:"50%"}]}>
        <Text style={styles.flipText}>{this.state.detectedTexts.join("\n")}</Text>
      </View>
    )
  }
renderCamera() {
<RNCamera
  ref={ref => {this.camera = ref;}}
  style={{flex: 1}}
  type={this.state.type}
  flashMode={this.state.flash}
  autoFocus={this.state.autoFocus}
  zoom={this.state.zoom}
  whiteBalance={this.state.whiteBalance}
  ratio={this.state.ratio}
  onTextRecognized={this.onTextRecognized}
  focusDepth={this.state.depth}
  permissionDialogTitle={'Permission to use camera'}
  permissionDialogMessage={'We need your permission to use your camera phone'}>
  {this.renderDetectedText()}
</RNCamera>
}

我正在使用真实的 Android 7.0 设备测试 int

这是 React-native-community 问题 gitHub 页面的 link

我能够通过修改一些 Java 代码来解决问题。 我注意到它与旋转有关。它正在尝试自下而上阅读文本。

当我将 phone 从纵向旋转到横向时,它仍然会尝试从 phone 的自下而上进行识别,现在是从左到右。

org.reactnative.camera.RNCameraView,(位于 node_modules/react-native-camera/android/src )我更改了 onFramePreview 方法以删除以下代码(已注释掉):

  @Override
  public void onFramePreview(CameraView cameraView, byte[] data, int width, int height, int rotation) {
    int correctRotation = RNCameraViewHelper.getCorrectCameraRotation(rotation, getFacing());
    int correctWidth = width;
    int correctHeight = height;
    byte[] correctData = data;
    //if (correctRotation == 90) {
    //  correctWidth = height;
    //  correctHeight = width;
    //  correctData = rotateImage(data, correctHeight, correctWidth);
    //}
    if (mShouldScanBarCodes && !barCodeScannerTaskLock && cameraView instanceof BarCodeScannerAsyncTaskDelegate) {
    //...
  }

不知道旋转是否只适用于部分机型