小编spr*_*ksh的帖子

通过pytesseract和PIL提高文本识别的准确性

所以我试图从图像中提取文本.而且由于图像的质量和尺寸不佳,它会产生不准确的结果.我用PIL尝试了一些增强功能和其他功能,但这只会降低图像质量.

有人可以建议图像的一些增强,以获得更好的结果.几个图像的例子:

二

三

ocr tesseract python-imaging-library python-3.x pytesser

10
推荐指数
1
解决办法
3899
查看次数

我应该编辑Django迁移文件来编辑不匹配的依赖项吗

我遇到了一个非常独特的问题。我创建的模型1. “消息”,用了一段时间,然后我把它改为2 “消息”,之后又变回3. “消息”,但是这一次,在模型领域中的许多变化。

后来我知道,Django迁移在重命名模型时会遇到一些问题。在我的迁移中,出现了一些问题。尽管我以正确的方式运行了所有迁移,但在运行第三次迁移以获得消息时,却遇到了一些手动修复的问题。现在,当我为其他模型中的更改进行迁移时,我发现此迁移仍取决于消息的第二次迁移。但是,它依赖于第二次迁移的字段实际上是在第三次迁移中创建的。

我得到的追溯:

ValueError: Lookup failed for model referenced by field activities.Enquiry.message_fk: chat.Message
Run Code Online (Sandbox Code Playgroud)

和:

  Applying contacts.0002_mailsend...Traceback (most recent call last):
  File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/config.py", line 163, in get_model
    return self.models[model_name.lower()]
KeyError: 'message'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/db/migrations/state.py", line 84, in render
    model = self.apps.get_model(lookup_model[0], lookup_model[1])
  File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/registry.py", line 202, in get_model
    return self.get_app_config(app_label).get_model(model_name.lower())
  File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/config.py", line 166, in get_model
    "App '%s' doesn't have a '%s' …
Run Code Online (Sandbox Code Playgroud)

python django django-migrations

6
推荐指数
1
解决办法
2019
查看次数

在多处理中,每个进程在 CPython 中都有自己的 GIL 是真的吗?这与创建新的运行时有何不同?

有什么注意事项吗?我有几个与此相关的问题。

创建更多 GIL 的成本是多少?它与创建单独的 python 运行时有什么不同吗?一旦创建了新的 GIL,它是否会根据该过程的需要从头开始创建所有内容(对象、变量、堆栈、堆),或者创建当前堆中所有内容的副本并创建堆栈?(如果垃圾收集处理相同的对象,它们就会发生故障。)正在执行的代码片段是否也被复制到新的 CPU 内核?我也可以将一个 GIL 与一个 CPU 核心联系起来吗?

现在复制东西是一项相当占用 CPU 的任务(如果我错了,请纠正我),决定是否进行多处理的阈值是多少?

PS:我说的是 CPython,但请随意将答案扩展到您认为必要的任何内容。

python cpu cpython multiprocessing gil

6
推荐指数
2
解决办法
383
查看次数

Python 上下文中的运行时是什么?它由什么组成?

在这个问题的上下文中什么是“运行时”?(/sf/ask/273038461/)

我试图了解 python 运行时由什么组成。我的猜测是:

  1. 包含所有运行时变量的 python 进程。
  2. 吉尔吉斯斯坦
  3. 底层解释器代码(CPython 等)。

现在,如果这是正确的,我们是否可以说 python 中的多处理创建了多个运行时并且一个 python 进程是我们可以直接与运行时相关联的东西?(我认为这是正确的选择)

或者,每个 python 线程都有自己的堆栈,与父进程在相同的 GIL 和内存空间上工作,可以被称为具有单独的运行时?

或者,不管有多少线程或进程正在运行,它都会在一个运行时下运行?

简单来说,Python 上下文中运行时的定义是什么?

PS:我理解线程和进程之间的区别。GIL:我理解这些影响,但我不理解。

python terminology runtime multiprocessing gil

5
推荐指数
1
解决办法
4612
查看次数

我可以在没有事务的情况下通过 sqlalchemy 执行查询吗

我正在尝试使用 sqlalchemy 在 Mysql 数据库上执行存储过程。

它从 shell 运行良好,但抛出此错误:

OperationalError: (MySQLdb._exceptions.OperationalError) (1568, "Transaction characteristics can't be changed while a transaction is in progress")
Run Code Online (Sandbox Code Playgroud)

原因似乎是 SQLAlchemy 在事务中运行查询。并且存储过程中的事务与它发生冲突。以下是 sqlalchemy 日志:

2019-07-24 15:20:28,888 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2019-07-24 15:20:28,888 INFO sqlalchemy.engine.base.Engine ()
2019-07-24 15:20:28,900 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2019-07-24 15:20:28,900 INFO sqlalchemy.engine.base.Engine ()
2019-07-24 15:20:28,910 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8mb4' and `Collation` = 'utf8mb4_bin'
2019-07-24 15:20:28,910 INFO sqlalchemy.engine.base.Engine ()
2019-07-24 15:20:28,916 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy flask-sqlalchemy

4
推荐指数
1
解决办法
2840
查看次数

编译为字节码,Java 与 Python。所用时间不同的原因是什么?

Java 和 python(仅讨论 CPython)分别被解释为 Java 和 CPython 字节码。然后,这两个字节码都由它们各自的虚拟机(JVM 和 Cpython VM)解释。(这里我忽略了在 10K 运行后开始的 JIT 编译部分。)

我对此有两个问题:

  1. 与 python 相比,为什么 Java 编译为 Java 字节码需要这么多时间?在 java 中,编译是一个明确的步骤,而在 python 中它发生在运行时。
  2. 为什么在第一次运行中编译到 CPython 字节码并缓存在所有连续运行中使用的 .pyc 文件中时,python 的第一次运行和第 n 次运行之间没有明显区别。这个字节码编译真的是python中几乎零成本的任务吗?

虽然它在运行时扮演着重要的角色,但我认为静态和动态类型在编译过程中不应该扮演太大的角色,也不应该是造成这种时间差异的唯一原因。另外,我认为在这两个实现中,在字节码生成期间进行了一些优化。

有什么我在这里想念的吗?(我没有太多的 Java 工作经验。)

更新:

我实际上对 python 第一次运行和后来的运行做了时间分析,发现语句 2 是错误的。运行大型python文件时有非常明显的区别。

方法很简单。创建了一个包含重复行的大文件

a = 5
b = 6
c = a*b
print(str(c))
Run Code Online (Sandbox Code Playgroud)

然后将其导入文件large.py并运行time python large.py

首次运行结果:

python large.py  1.49s user 0.33s system 97% cpu 1.868 total
Run Code Online (Sandbox Code Playgroud)

第二次运行结果:

python large.py  0.20s user 0.08s system …
Run Code Online (Sandbox Code Playgroud)

python java jvm cpython compilation

4
推荐指数
1
解决办法
808
查看次数

使用PIL从URL打开图像文件以使用pytesseract进行文本识别

我试图下载图像并使用BytesIO打开图像以使用PIL和pytesseract从其提取文本时遇到一个令人困惑的问题。

>>> response = requests.get('http://abc/images/im.jpg')
>>> img = Image.open(BytesIO(response.content))
>>> img
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=217x16 at 0x7FDAD185CB38>
>>> text = pytesseract.image_to_string(img)
>>> text
''
Run Code Online (Sandbox Code Playgroud)

这里给出一个空字符串。

但是,如果我保存图像,然后用pytesseract再次打开它,它将给出正确的结果。

>>> img.save('im1.jpg')
>>> im = Image.open('im1.jpg')
>>> pytesseract.image_to_string(im)
'The right text'
Run Code Online (Sandbox Code Playgroud)

只是为了确认,两者的大小相同。

>>> im.size
(217, 16)
>>> img.size
(217, 16)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?是否需要保存图像或者我做错了什么?

ocr image request python-imaging-library python-3.x

3
推荐指数
1
解决办法
2298
查看次数

在 Python 3.6 Alpine 上安装 wkhtmltopdf

有没有人能够在 python:3.6.0-alpine 上安装 wkhtmltopdf。

我已经尝试了互联网上的所有解决方案。我需要使用 pdfkit,它内部使用 wkhtmltopython 将 html 转换为 pdf。

python wkhtmltopdf docker alpine-linux

3
推荐指数
1
解决办法
1401
查看次数

如何在python中以随机顺序从列表中选择条目

问题很简单.我有一个说10个条目的列表,我正在运行循环.我想要的是每个条目只需一次,但是按随机顺序.

什么是最好和最pythonic的方式呢?

python list

2
推荐指数
1
解决办法
104
查看次数

CPU内核如何在多处理中分配给python进程?

假设我在多核 CPU(比如 4)上运行多个 python 进程(不是线程)。GIL 是流程级别,因此特定流程中的 GIL 不会影响其他流程。

我的问题是,一个进程中的 GIL 是只占用 4 个内核中的一个内核,还是会占用所有 4 个内核?

如果一个进程同时锁定所有内核,那么多处理应该不会比 Python 中的多线程更好。如果不是,如何将内核分配给各种进程?

作为观察,在我的 8 核系统中(由于超线程是 4*2),当我运行单个 CPU 绑定进程时,8 个核中有 4 个的 CPU 使用率上升。

简化这个:

在 4 核 CPU 上运行的 4 个 python 线程(在一个进程中)将比执行相同工作的单线程花费更多时间(考虑到工作完全受 CPU 限制)。4 个不同的进程做这么多的工作会减少近 4 倍的时间吗?

python multiprocessing gil

0
推荐指数
1
解决办法
3347
查看次数